web-dev-qa-db-fra.com

Angular - Impossible de se lier à 'ngValue' car ce n'est pas une propriété connue de 'mat-option'

J'utilise angular 5 et j'obtiens l'erreur de la console:

Ne peut pas se lier à 'ngValue' car ce n'est pas une propriété connue de 'Mat-option'

Mon modèle ressemble à ceci:

  <mat-select placeholder="Select Book" name="patient" [(ngModel)]="selectedBook">
     <mat-option *ngFor="let eachBook of books" [ngValue]="eachBook">{{eachBook.name}}</mat-option>
  </mat-select>

J'ai importé MatSelectModule et MatOptionModule

Comment pouvons-nous résoudre ce problème?

3
Manoj Shrestha

Vous devriez utiliser la valeur

[value]="eachBook"
6
Sajeetharan

La réponse acceptée n'est pas une solution, mais une solution de contournement, car value et [ngValue] remplissent des objectifs différents. value peut être utilisé pour des valeurs de chaîne simples, alors que [ngValue] est nécessaire pour prendre en charge des valeurs autres que des chaînes.

Selon la documentation:

Si vous avez importé le FormsModule ou le ReactiveFormsModule, cet accesseur de valeur Sera actif sur tout contrôle de sélection ayant une directive form . Vous n'avez pas besoin d'ajouter un sélecteur spécial pour l'activer.

Si vous obtenez cette erreur, vous devez probablement importer FormsModule ou ReactiveFormsModule dans votre application.

Par exemple, dans app.module.ts:

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

// ...

imports: [
    FormsModule,
    ...
]
4
Mark

J'ai rencontré le même problème. La solution pour moi est d’importer 'ReactiveFormsModule'. Vous pouvez donc utiliser [ngValue] pour lier un objet.

0
Emon Zan