私は最初のものを好むが、同じことをする方法をしなければなりません。しかし、最初のアプローチは機能していないようです。 (tap()
はトリガーされません)
// does not work
this.actions$.pipe(
ofType(LayoutActions.Types.CHANGE_THEME),
takeUntil(this.destroyed$),
tap(() => {
console.log('test')
}),
);
// works
this.actions$.ofType(LayoutActions.Types.CHANGE_THEME).subscribe(() => {
console.log('test')
});
最後にバルブがある実際の物理的なパイプのようなRxJSパイプを想像してください。各パイプは、パイプを流れる液体を「変更」しますが、最後のバルブが閉じている限り、何も流れません。
つまり、最後にバルブを開く必要があります。これは、監視可能なパイプに対してサブスクライブによって行われます。最も簡単な解決策は次のとおりです。
this.actions$.pipe(
ofType(LayoutActions.Types.CHANGE_THEME),
takeUntil(this.destroyed$),
tap(() => {
console.log('test')
}),
).subscribe(_ => console.log("water is flowing!"));
pipe
は新しいObservable
を作成するため、それを割り当ててから、そのインスタンスにサブスクライブする必要があります。あなたのケースではpipe
リターンを省略しているため、余分なパイプアクションなしで、変更されていない単純なObservable
になります。
また、pipe
(およびtap
)を機能させるには、サブスクライブする必要がある可能性が高いことも覚えておいてください。
試す
this.actions$=this.actions$.pipe(
tap(()=>console.log("First tap")),
ofType(LayoutActions.Types.CHANGE_THEME),
takeUntil(this.destroyed$),
tap(() => {
console.log('Last tap')
}),
);
this.actions$.subscribe(() => {
console.log('subscribtion')
});