Angular 7 和 HTML 选择问题

标签 angular angular-reactive-forms

我有一个 Angular 7 响应式(Reactive)表单,其中包含以下字段:

<div class="ui-grid-col-2">
    <select formControlName="network_interface" (change)="onInterfaceChange($event.target.value)">
        <option *ngFor="let ifc of interfaces; let idx = index;" [value]="ifc.id">
            {{ ifc.id }} - {{ ifc.name }}
        </option>
    </select>
</div>
<div class="ui-grid-col-2">
    <select formControlName="interface_ip">
        <option *ngFor="let obj of interfacesIps; let idx = index;" [value]="obj.id">
            {{ obj.name }}&nbsp;({{obj.address}})
        </option>
    </select>
</div>

基本上,它允许用户从存储在数组 interfacesinterfacesIps 中的 2 个列表中选择接口(interface)和接口(interface) IP。

一个组合与另一个组合“绑定(bind)”,因此如果我选择一个接口(interface),则另一个组合必须显示其内部 IP 地址。这是在 onInterfaceChange 事件处理程序中完成的,由 change 事件触发。这就是我所做的:

onInterfaceChange(interfaceId : any): void {
    // NOTE: this.interfaces[INDEX].ips is an array of IP addresses
    this.interfacesIps = this.interfaces[interfaceId].ips;
}

这有效,每当我更改所选接口(interface)时,IP 列表都会刷新,但我意识到与组合 (interface_ip) 关联的表单控件未更新。它应该是列表中的第一个 IP,但我保留旧值,直到更改为另一个 IP。

我已经通过手动更改上面事件处理程序上的表单控件值来修复此问题,但我想知道是否有办法自动执行此操作。

提前致谢,

最佳答案

您可以按如下方式订阅network_interface表单控件值更改;

this.network_interface.valueChanges.subscribe(val => {
// your code here
});

如果您使用的是非字符串值,您可能还需要将 [value] 更改为 [ngValue]

关于Angular 7 和 HTML 选择问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54572789/

相关文章:

javascript - 更新 chartjs 和 angular 中的图表

angular - Rxjs 间隔请求如果仍在进行中则不应重置,但如果用户更改输入则应重置

angular - 迭代 Angular 2+ FormArray

html - Bootstrap v.4.1 - 输入中断中的图标

javascript - 当服务中数据发生变化时如何通知组件

javascript - 如何避免对服务器 URL 进行硬编码

angular - NGRX 8, Angular ,如何处理未定义的错误

javascript - 使用 Angular 4 Form Group 编辑和添加新数据

angular - 如何使用 Angular5 检查表单控件的变化

angular - 使用 Angular Reactive Forms 验证年龄是否超过 18 岁