对于 Angular6+,当您同时拥有 formControl 和 [(ngModel)] 时,会出现弃用警告
看来您在同一表单字段上使用 ngModel
表单控件。
支持使用 ngModel 输入属性和 ngModelChange 事件
反应式表单指令已在 Angular v6 中弃用并将被删除
在 Angular v7 中。
选项 1 使用 [ngModel] 而不使用 FormControl
正如第一个答案所示,像这样拆分 [ngModel] 和 (ngModelChange) 。
<mat-select
[(ngModel)]="selectedFoods"
(ngModelChange)="selectedFoods" name="selectedFoods"
placeholder="Favorite food" multiple>
<mat-option *ngFor="let food of allfoods" [value]="food.value">
{{food.viewValue}}
</mat-option>
</mat-select>
对于 ts 来说。
allfoods: Food[] = [
{value: 'steak-0', viewValue: 'Steak'},
{value: 'pizza-1', viewValue: 'Pizza'},
{value: 'tacos-2', viewValue: 'Tacos'},
{value: 'pasta-3', viewValue: 'Pasta'}
];
selectedFoods = [
'steak-0', 'pasta-3'
];
选项 2 使用 [formControl] 而不使用 [ngModel]
<mat-form-field>
<mat-select [formControl]="foodForm" placeholder="Favorite food" multiple>
<mat-option *ngFor="let food of allfoods" [value]="food.value">
{{food.viewValue}}
</mat-option>
</mat-select>
</mat-form-field>
在这种情况下,选择是在 FormControl 的构造函数中初始化的。
allfoods: Food[] = [
{value: 'steak-0', viewValue: 'Steak'},
{value: 'pizza-1', viewValue: 'Pizza'},
{value: 'tacos-2', viewValue: 'Tacos'},
{value: 'pasta-3', viewValue: 'Pasta'}
];
myselectedFoods = ['pasta-3', 'steak-0'];
foodForm: FormControl = new FormControl(this.myselectedFoods);
https://stackblitz.com/edit/angular-mat-select-multi-with-formcontrol https://stackblitz.com/edit/angular-mat-select-multi-with-formcontrol