Cod*_*ise 3 typescript angular-material angular angular-forms
我有一个带有各种选择框的表单,这些选择框使用对象作为值:
<mat-option [value]="object">
当我通过表单创建新记录时,这非常有用。现在,当我编辑记录时,我遇到object了mat-select-option不是我从休息服务中获得的“相同”对象,因此编辑记录时没有选择我的选择框。
object.id在决定选择哪个选项时,是否可以告诉选择框窗口小部件匹配?我想可能需要编写一条指令来处理此问题,但是使用Angular或Angular Material库或其他现有解决方案可能已经可以实现。
详细来说,我有我的foo.component.ts文件:
let item = {
'fruit': { id: 1, 'label': 'Pineapple' },
}
let options = [
{ 'id':1, 'label': 'Pineapple' },
{ 'id':2, 'label': 'Banana' },
{ 'id':3, 'label': 'Papaya' }
]
Run Code Online (Sandbox Code Playgroud)
而我的.html文件:
<mat-select placeholder="Fruit" [(ngModel)]="item.fruit">
<mat-option *ngFor="let option of options" [value]="option">{{option.label}}</mat-option>
</mat-select>
Run Code Online (Sandbox Code Playgroud)
用户访问页面时,他们应该看到在中选择的“菠萝” mat-select。由于item.fruit和options数组中的“菠萝” 没有指向同一个“菠萝”对象,因此- mat-select为空。
我想看到类似的东西:
<mat-select
placeholder="Fruit"
[(ngModel)]="item.fruit"
equalityAttr="id"
>
Run Code Online (Sandbox Code Playgroud)
这是[compareWith]指令。Angular.io目前处于关闭状态,因此我将继续阅读本文,以供参考。
的HTML
<mat-select
placeholder="Fruit"
[(ngModel)]="item.fruit"
[compareWith]="objectComparisonFunction">
<mat-option *ngFor="let option of options" [value]="option">{{option.label}}</mat-option>
</mat-select>
Run Code Online (Sandbox Code Playgroud)
打字稿
public objectComparisonFunction = function( option, value ) : boolean {
return option.id === value.id;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1625 次 |
| 最近记录: |