角函数被多次调用

时间:2018-08-28 11:24:46

标签: javascript angular

我有一个正在调用模板的组件方法。

例如:

export class Component {
  isValid(id): Observable<boolean> {
    return service.isValid(id)
  }
}

<div *ngIf="isValid(1) | async"></div>
<div *ngIf="isValid(2) | async"></div>
<div *ngIf="isValid(3) | async"></div>

isVaild方法返回一个可观察值。问题在于,在每个更改检测周期中,Angular都会调用isValid方法,该方法返回一个新的可观察对象。

这种情况的解决方案是什么?

1 个答案:

答案 0 :(得分:-1)

如果订阅该服务,那么您将在回调函数中使用该逻辑

export class Component {
  isValid: boolean;

  isValid(id) {
    service.isValid(id).subscribe(response => {
      this.isValid = response;
    });
  }
}

然后在模板中,您无需调用isValid函数,也无需使用| async

<div *ngIf="isValid(1)"></div>
<div *ngIf="isValid(2)"></div>
<div *ngIf="isValid(3)"></div>