这是否正确使用Angular中的do check?

时间:2017-12-12 10:55:53

标签: angular

我想调用一个服务来发布数据,每次用户更改任何下拉值(组件中有几个下拉列表)或输入中的用户类型(例如:name)时,如下所示:

  <input type="text" [ngModel]="clientName">           

  <select [(ngModel)]="selectTop">
  <option *ngFor="let top of TypesTops" [value]="top.TypeTopId"> {{top.TypeTopName}}
  </option>
  </select>

在我使用ngDoCheck功能的组件中,所以每当一个值改变时,就会发生对服务的调用:

  ngDoCheck(): void {        
            let filter = this.getFilter();
            this.filterService.sendFilter(filter);           
    }

我还有一个输入需要触发相同的调用。这是一个正确的方法吗?在示例中使用ngDoCheck是否有任何挫折?

1 个答案:

答案 0 :(得分:0)

不,在发送请求之前,您一定要检查ngDoCheck()中的值是否实际发生了变化。

每次运行更改检测时都会调用

ngDoCheck(),这可能很常见。

对于您的用例,我认为更好的方法是使用在选择更改时触发的事件

<select [(ngModel)]="selectTop" (ngModelChange)="selectChanged()">
selectChanged(): void {        
        let filter = this.getFilter();
        this.filterService.sendFilter(filter);           
}