2017-10-20 148 views
0

當選擇輸入的選項是在一個模板以這種方式定義:選擇輸入,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並將內容文本視爲值。

+2

我認爲問題出現在代碼的其他部分。如果您可以創建一個stackblitz.com複製示例,則很容易進行調查。 –

+0

其餘的代碼只是加載參數列表,在這兩種情況下,'code'都是一個數字。 – francadaval

+1

「Talk is cheap,給我看代碼。」 Linus Torvalds(2000) –

回答

1