选择输入,ngValue在选项的不同在角2成分
问题描述:
当选择输入的选项是在一个模板以这种方式定义:选择输入,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并将内容文本视为值。
答
NgSelectOption
想从@Host()
注入SelectControlValueAccessor
,但在你的情况下主机不提供它。
这将导致NgSelectOption
指令的其余部分表现不同
导致你descried的行为。
我还没有找到解决办法。
(我的尝试https://stackblitz.com/edit/angular-p89pvz?file=app/select_loader.component.ts)
我认为问题出现在代码的其他部分。如果您可以创建一个stackblitz.com复制示例,则很容易进行调查。 –
其余的代码只是加载参数列表,在这两种情况下,'code'都是一个数字。 – francadaval
“Talk is cheap,给我看代码。” Linus Torvalds(2000) –