當選擇輸入的選項是在一個模板以這種方式定義:選擇輸入,ngValue在選項的不同在角2成分
<select formControlName="gender">
<option *ngFor="let g of genders" [ngValue]="g.code">{{g.name}}</option>
</select>
控制呈現:
<select class="ng-pristine ng-valid ng-touched" formcontrolname="gender" ng-reflect-name="gender">
<option ng-reflect-ng-value="0: 71011">Dona</option>
<option ng-reflect-ng-value="1: 71012">Home</option>
<option ng-reflect-ng-value="2: 71013">Desconegut</option>
</select>
即效果很好,對於選定的選項,的值從FormGroup恢復爲。
現在我試圖開發加載任何參數列表具有相同的結構(代碼/名稱)的組成部分,對於這一點,我已經定義的組件:
@Component({
selector: 'select[selectLoader]',
template: `
<option *ngFor="let parameter of parametersArray" [ngValue]="parameter.code">{{parameter.name}}</option> `
})
在的內碼組件,參數列表將從屬性family
(爲參數族提供代碼)的值正確加載。不同的是,在這兩種情況下是所述碼的數量,在一個組件被渲染:
<select class="c3 ng-pristine ng-valid ng-touched" family="GENDER" formcontrolname="gender" selectloader="" ng-reflect-name="gender" ng-reflect-family="GENDER">
<option ng-reflect-ng-value="71011">Dona</option>
<option ng-reflect-ng-value="71012">Home</option>
<option ng-reflect-ng-value="71013">Desconegut</option>
</select>
在這種情況下,由FormGroup返回值是一個字符串而不是數字所以雖然選項的模板部分是相同的,它呈現的方式不同,返回值與ngValue
類型不一致。
在這兩種情況下,ngValue
與[ngValue]="parameter.code"
定義爲code
一個數字,但在第二個被視爲一個字符串。
這是爲什麼不同,我該怎麼辦?
更新:這是example in stakblitz。我發現,即使完全忽略ngValue並將內容文本視爲值。
我認爲問題出現在代碼的其他部分。如果您可以創建一個stackblitz.com複製示例,則很容易進行調查。 –
其餘的代碼只是加載參數列表,在這兩種情況下,'code'都是一個數字。 – francadaval
「Talk is cheap,給我看代碼。」 Linus Torvalds(2000) –