有问题的代码 ts 部分:
import { Component } from '@angular/core';
import { FormControl } from '@angular/forms';
@Component({
selector: 'my-app',
templateUrl: './app.component.html'
})
export class AppComponent {
constructor() {}
fields = [null, null];
countries: any = [
{
full: 'Great Britain',
short: 'GB'
},
{
full: 'United States',
short: 'US'
},
{
full: 'Canada',
short: 'CA'
}
];
}
有问题的代码html部分:
<div *ngFor="let f of fields; let i = index">
<mat-form-field>
<mat-select name="countryString" [(ngModel)]="fields[i]" placeholder="Country">
<mat-option *ngFor="let item of countries" [value]="item.short">{{item.full}}</mat-option>
</mat-select>
</mat-form-field>
</div>
这是我在 stackblitz 上的示例。
基本思想如下:
- 有一个字符串数组
- 最初,该数组包含固定数量的元素,但具有空值
- 我们想给元素赋值,所以我们遍历它们,并将它们绑定到一个 mat select 组件
当我们要选择第一个元素时,问题就开始了,因为当您选择它时,第二个组件也获取了该属性。有趣的是,数组的第二个元素没有获得值,但绑定的 mat-select 组件切换到该元素。
正如你所看到的,我写了一个没有 ngFor 部分的工作版本,它的工作方式就像一个魅力,所以我的问题是这里的问题是什么?是材料设计缺陷还是我犯了一些错误?