我正在使用角度5而我收到控制台错误:
无法绑定到'ngValue',因为它不是已知的属性 '毡选项'
我的模板如下所示:
<mat-select placeholder="Select Book" name="patient" [(ngModel)]="selectedBook">
<mat-option *ngFor="let eachBook of books" [ngValue]="eachBook">{{eachBook.name}}</mat-option>
</mat-select>
我已导入MatSelectModule
和MatOptionModule
。
我们如何解决这个问题?
答案 0 :(得分:7)
您应该使用值
[value]="eachBook"
答案 1 :(得分:5)
可接受的答案不是解决方案,而是解决方法,因为value
和[ngValue]
的作用不同。 value
可用于简单的字符串值,而[ngValue]
对于支持非字符串值是必需的。
根据文档:
如果您导入了FormsModule或ReactiveFormsModule,则此 值访问器将在具有表单的任何选择控件上处于活动状态 指示。您无需添加特殊的选择器即可激活它。
如果遇到此错误,则很可能需要将FormsModule
或ReactiveFormsModule
导入应用程序。
例如,在app.module.ts
中:
import { FormsModule } from '@angular/forms';
// ...
imports: [
FormsModule,
...
]
答案 2 :(得分:0)
我遇到了同样的问题。对我来说,解决方案是导入“ ReactiveFormsModule”。
因此,您可以使用[ngValue]
来绑定对象。
答案 3 :(得分:0)
对于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的字符串表示形式。