Angular - Can't bind to 'ngValue' since it isn't a known property of 'mat-option'

The accepted answer is not a solution but a work-around, as value and [ngValue] serve different purposes. value can be used for simple string values, whereas [ngValue] is necessary to support non-string values.

Per the documentation:

If you have imported the FormsModule or the ReactiveFormsModule, this value accessor will be active on any select control that has a form directive. You do not need to add a special selector to activate it.

If you are getting this error, you most likely need to import either FormsModule or ReactiveFormsModule into your app.

For example, in app.module.ts:

import { FormsModule } from '@angular/forms';

// ...

imports: [
    FormsModule,
    ...
]

You should use value

[value]="eachBook"

I have met the same issue. The solution for me is to import 'ReactiveFormsModule'. So you can use [ngValue] to bind an object.