我有以下管道:
{{ "value" | translationPipe | async }}
translationPipe {
constructor(otherService: OtherService, myService: MyService, _ref : ChangeDetectorRef) {
this.myService.myEventEmitter.subscribe(value -> {
_ref.markForCheck();
});
}
transform(value, args?) {
// this returns an api call observable
return this.otherService.doApiCall();
}
}
但是,当事件发射器输出事件时,管道的值不会重新获得。
答案 0 :(得分:1)
角度变化检测检查传递给管道的值和参数是否有变化。如果他们没有改变,调用markForCheck()
只会浪费CPU。
解决方法可能是使用pure: false
并返回缓存的结果,直到myEventEmitter
发出事件。