我目前有一個多選串列,我想從組件中向其添加一個值。我現在的做法在用戶界面上沒有更新,也沒有運行我的自定義驗證器。如果我控制表單控制元件的值,它顯示的是正確的值。是否有更好的方法,或者誰能解釋一下為什么會發生這種情況?
<mat-form-field appearance="fill"/span>>
<mat-label>Toppings</mat-label>
<mat-select [formControl]="toppings"/span> multiple>/span>
< mat-option *ngFor="let topping of toppingList" [value] ="topping">
{{topping}}
</mat-option> {{topping}}。
</mat-select>/span>
</mat-form-field>
<br />
<button(click)="add()"> 添加洋蔥到串列</按鈕>
export class SelectMultipleExample {
toppings = new FormControl([] )。
toppingList: string[] = [
'Extra cheese',
'Mushroom',
'Onion',
'Pepperoni',
'香腸',
'Tomato',
];
ngOnInit() {
this.toppings.addValidators(this.validator)。
}
add(){
this.toppings.value.push('Onion' )。
console.log(this.toppings.value) 。
}
validator(control: AbstractControl)。) ValidationErrors | null {
console.log('Checked')。
return null;
https://stackblitz.com/edit/angular-dwztco?file=src/app/select-multiple-example.ts
uj5u.com熱心網友回復:
你需要呼叫FormControl.setValue來更新它。FormControl.value應該是只讀的。
更改
this.toppings。 value.push('Onion')。
to
this.toppings.setValue([. .this.toppings.value,"Onion"/span>])。
請注意,當多次點擊按鈕時,會在串列中添加重復的值 "Onion",但當你手動選擇串列中的東西時,這些重復的值會自動被洗掉。無論如何,這已經超出了這個問題的范圍。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/323545.html
標籤:
