2017-07-17 10 views
0

にリフレッシュされていない私には、以下のパイプを持っている:イベント・エミッターがイベントを出力したときにパイプのサブスクリプション・イベント

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

} 

は、しかし、パイプの値がreobtainedされていません。

+0

なぜそれが再評価されると思いますか? – yurzui

+0

@yurzuiを呼び出して_ref.markForCheckを呼び出すとリバリュエーションが発生しますか? – mangusbrother

+0

@mangusbrother変更検出のために* view *をマークします。パイプにはビューがありません。 – cgTag

答えて

1

角度変化検出では、変更のためにパイプに渡された値とパラメータがチェックされます。変更がなければ、markForCheck()はCPUの無駄にすぎません。

を使用し、myEventEmitterがイベントを発行するまで、キャッシュされた結果を返すことがあります。

関連する問題