2017-10-20 211 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