Angular 7选择选项选择执行两次

标签 angular angular7

我有这个模板

<select
      [(ngModel)]="currentServer.environment"
      class="form-control form-control-sm component-form-control-color"
      id="inputGroupSelect01">
      <option
        *ngFor="let environment of environments"
        [ngValue]="environment"
        [selected]="myFunction()"
        >{{ environment.Name }}
      </option>
</select>

如果在我的 Controller 中 myFunction() 包含 à console.log() 并且如果我的环境数组包含 4 个元素,console.log 将被执行 8 次。

为什么?

最佳答案

尝试如下使用[compareWith]

<select
      [(ngModel)]="currentServer.environment"  [compareWith]="compareFn"
      class="form-control form-control-sm component-form-control-color"
      id="inputGroupSelect01">
      <option
        *ngFor="let environment of environments"
        [ngValue]="environment"     
        >{{ environment.Name }}
      </option>
</select>

然后在你的ts文件中添加以下函数

compareFn(c1, c2): boolean {
    return c1 && c2 ? c1.id=== c2.id: c1 === c2;
}

这里的“id”应该是唯一的属性名称,您需要根据它来对对象进行比较。

关于Angular 7选择选项选择执行两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55257498/

相关文章:

angular - 无法绑定(bind)到 'placeholder',因为它不是 'ng-multiselect-dropdown' 的已知属性

angular - Angular 8 中模态的循环依赖

angular - 如何使用 ngComponentOutlet 对多种类型的组件进行 ngFor?

angular - 从 API 加载图像后如何对图像执行任何操作

javascript - Angular 表单验证以验证电话号码

angular - p-inputMask ng-model 未清除无效值

javascript - 如何更改选项卡并转到导航堆栈的根目录?

angular - 如何在组件中测试FormGroupDirective?

angular - 在文件 :///without server 上本地运行 Angular 7 项目

angular - 如何使用patchValue以 Angular react 形式设置日期