簡體   English   中英

Angular - 無法綁定到“ngValue”,因為它不是“mat-option”的已知屬性

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

我正在使用 angular 5,但出現控制台錯誤:

無法綁定到“ngValue”,因為它不是“mat-option”的已知屬性

我的模板如下所示:

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

我已經導入了MatSelectModuleMatOptionModule

我們如何解決這個問題?

接受的答案不是解決方案,而是一種變通方法,因為value[ngValue]用於不同的目的。 value可用於簡單的字符串值,而[ngValue]是支持非字符串值所必需的。

根據文檔:

如果您已導入 FormsModule 或 ReactiveFormsModule,則此值訪問器將在任何具有表單指令的選擇控件上處於活動狀態。 您不需要添加特殊的選擇器來激活它。

如果您收到此錯誤,您很可能需要將FormsModuleReactiveFormsModule導入您的應用程序。

例如,在app.module.ts

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

// ...

imports: [
    FormsModule,
    ...
]

你應該使用價值

[value]="eachBook"

我遇到了同樣的問題。 我的解決方案是導入“ReactiveFormsModule”。 所以你可以使用[ngValue]來綁定一個對象。

對於 mat-autocomplete,使用項目而不是字符串,對於 mat-option,ngValue 不可用,但是對於 [value],我們可以通過使用 option.value 而不是 option.viewValue 來訪問對象:

allFruits: Item[] = [
    {
      name: 'hello',
      selected: true,
    },
    {
      name: 'world',
      selected: false,
    }
  ];


<mat-autocomplete #auto="matAutocomplete" (optionSelected)="selected($event)">
    <mat-option *ngFor="let fruit of filteredFruits | async" [value]="fruit">
      {{fruit.name}} {{fruit.selected}}
    </mat-option>
  </mat-autocomplete>


selected(event: MatAutocompleteSelectedEvent): void {
    console.log('selected ', event.option.value); <----- THIS
    console.log('selected ', event.option.viewValue); <---- NOT THIS
}

使用 option.value 你得到對象。 使用 option.viewValue 您將獲得用戶看到的 innerHTML 的字符串表示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM