【问题标题】:Select input, ngValue in options differs in Angular 2 component选择输入,选项中的ngValue在Angular 2组件中有所不同
【发布时间】:2017-10-23 18:44:37
【问题描述】:

以这种方式在模板中定义选择输入的选项时:

<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都是一个数字。
  • "谈话很便宜。给我看代码。"莱纳斯·托瓦兹 (2000)
  • 现在你有一个例子......

标签: angular html-select angular-components


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-17
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    • 2013-09-30
    • 2015-12-14
    相关资源
    最近更新 更多