javascript - 订阅事件时未刷新具有 ChangeDetectorRef 的管道

标签 javascript angular typescript events

我有以下管道:

{{ "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();
 }

}

但是,当事件发射器输出事件时,不会重新获取管道的值。

最佳答案

Angular 变化检测检查传递到管道的值和参数以进行更改。如果它们不改变,调用 markForCheck() 只是浪费 CPU。

解决方法可能是使用 pure: false 并返回缓存的结果,直到 myEventEmitter 发出事件。

关于javascript - 订阅事件时未刷新具有 ChangeDetectorRef 的管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45148835/

相关文章:

javascript - Tablesorter - 依赖于排序类型的自定义解析器

javascript - 使用递增/递减按钮循环回到数字范围的开始或结束

arrays - 带有 *ngFor 的 Angular2 奇怪的形式行为

Angular Material 扩展面板 : Multiple expand

typescript - 为什么 Typescript 允许实现抽象类?

javascript - TypeScript - 如何覆盖 lib.d.ts 中的声明?

generics - 如何获取对指定类型的泛型类的构造函数的引用?

javascript - styled.TouchableOpacity 组件中 props.style 的类型是什么?

javascript - 计算图片内对象的大小

typescript - Angular 2找不到文件名 'Set'