【问题标题】:Angular select element looses default value when using [ngValue]使用 [ngValue] 时,角度选择元素会丢失默认值
【发布时间】:2019-06-03 05:10:21
【问题描述】:

我有选择的组件可以通过反应表单动态加载

选择默认值 100% 像这样工作:

<div class="selectComponent" [formGroup]="group">
    <label>{{ config.label }}</label>
    <select [formControlName]="config.name">
        <option value="">{{ config.placeholder }}</option>
        <option *ngFor="let option of config.options">
            {{ option.name }}
        </option>
    </select>
</div>

但后来我意识到,即使我希望 option.name 显示在下拉列表中,我也想要一个与 option.id 这样的名称不同的值

所以我将代码更改为:

<div class="selectComponent" [formGroup]="group">
    <label>{{ config.label }}</label>
    <select [formControlName]="config.name">
        <option value="">{{ config.placeholder }}</option>
        <option *ngFor="let option of config.options" [ngValue]="option.optionid">
            {{ option.name }}
        </option>
    </select>
</div>

但现在默认值没有了,框只是空的,即使选项值config.placeholder是下拉列表中的第一个值

到目前为止,我尝试过的任何方法都没有奏效。

【问题讨论】:

  • 您是否尝试过 [value]? fwik [ngValue] 仅用于绑定对象。
  • @MarkusDresch 我尝试了value,它给出了相同的效果,现在也按照你的建议尝试了[value],两者的效果都与[ngValue]相同,其中框为空且默认为是点击下拉列表后的最高值。

标签: angular


【解决方案1】:

您需要使用空字符串初始化 formControl,然后一切都应该按预期工作。问题是formControl 的值为null 但占位符选项的值为空字符串

group = new FormGroup({
 configuredControlName: new FormControl(""),
});

或者,您可以将占位符的值与 null 值绑定,它也可以按预期工作。

<option [value]="null">{{ config.placeholder }}</option>

Demo

【讨论】:

  • Ahhh 我看到你在那里做了什么......所以基本上 formControl 会寻找一个与 formControl 值相同的选项值,用作默认值,如果它没有找到任何东西,它使用一个空值......(所以你设置 formControl 值 = 默认值或默认值 = formControl 值)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-15
  • 1970-01-01
  • 1970-01-01
  • 2022-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多