我使用asyncPipe
带有*ngIf
装饰,可自动订阅/取消订阅到可观察一个返回object
的内<ng-container>...</ng-container>
。
到目前为止好,但里面ng-container
标签,我想通过object
作为参数的方法doSomething(object)
。
问题是,该方法运行的5-8倍?
HTML模板
<ng-container *ngIf="(user$ | async) as user">
{{ doSomething(user) }} <-- method executes multiple times
</ng-container
打字稿文件
class Component implements OnInit {
user: Observable<User>;
constructor() {}
ngOnInit() {
this.user$ = this.userService.getUser(id);
}
checkConfigs(object) {
console.log(object);
}
}
我测试过,如果这个问题是执行多次的观察的,但它运行一次。 然后以为内的代码ng-container
是问题,但也运行一次。
现在的问题是不同的这是因为我不想问其是否可取,但如何解决这一问题。 在实践中,这应该工作。 但由于Angulars changeDetection架构,它并不如预期的观测量工作,其甚至在这篇文章中指出的东西,你不知道的AsyncPipe如何使用来解决它changeDetection: ChangeDetectionStrategy.OnPush
。