我有一個<select>標簽需要將multiple屬性系結到組件中的值。如果我這樣做:
<select [multiple]="multiple" [(ngModel)]="model" id='sel' name='sel'>
<option *ngFor="let option of options" [ngValue]="option.value">{{option.label}} - {{option.value}}</option>
然后我得到了非常古怪的行為——頁面初始化時選擇了第一個專案,即使該ngModel值設定為不同的選項專案。此外,系結ngModel可以在更改時提供一個陣列,這是您期望的multiple標簽,盡管我希望標簽依賴于布林值。
這是一個 StackBlitz:https ://stackblitz.com/edit/angular-ivy-bpvmt2 ? file = src/app/app.component.html
uj5u.com熱心網友回復:
[multiple]onselect標簽的存在會導致創建SelectMultipleControlValueAccessor用于寫入多選控制元件值和偵聽多選控制元件更改。無論我們系結[multiple]到真值還是假值,都會發生這種情況。
SelectMultipleControlValueAccessor 選擇器
因此,ngModel即使multiple設定為 false ,系結到的值也需要是一個陣列。它可以作業,但是是的,模型將是一個包含一個元素的陣列。
期望model基于系結到的布林值在陣列和非陣列型別之間切換[multiple],這意味著ControlValueAccessor需要動態創建相關指令并與同一NgModel實體關聯。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/409245.html
標籤:
上一篇:如何從NGRX存盤中線性獲取資料
