尽管我更喜欢第一个,但我必须采取相同的方法。但是第一种方法似乎无效。 (<strong></strong>
未触发)
tap()
答案 0 :(得分:11)
想象一下RxJS管道,就像实际的物理管道一样,末端带有阀门。每个管道都会“修改”流过的液体,但是只要关闭末端的阀门,就不会有任何流动。
因此,您需要的是最后打开阀门。这是通过订阅来完成的。最简单的解决方案是:
this.actions$.pipe(
ofType(LayoutActions.Types.CHANGE_THEME),
takeUntil(this.destroyed$),
tap(() => {
console.log('test')
}),
).subscribe(_ => console.log("water is flowing!"));
答案 1 :(得分:3)
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')
});