rxjs 和 angular 路由器事件:在第一次发出后将布尔值设置为初始值
rxjs and angular router events: Set boolean to inital value after first emit
如果 angular 路由器事件被触发,下面的函数应该 return 为真。
private routeChanged$(): Observable<boolean> {
return this.router.events.pipe(
filter(event => event instanceof NavigationEnd),
mapTo(true),
startWith(false),
untilDestroyed(this)
);
}
它工作正常但它也应该在事件被触发后再次重置初始值(false)所以
我基本上想在它第一次发出 true 后将布尔值设置回 false (当路线改变时)
(抱歉我的英语不好,我希望你明白我的意思)
你的意思是它应该在 true
之后立即再次发出 false
吗?
在那种情况下你可以这样做:
private routeChanged$(): Observable<boolean> {
return this.router.events.pipe(
filter(event => event instanceof NavigationEnd),
switchMapTo([true, false]),
startWith(false),
untilDestroyed(this)
);
}
switchMapTo
将“订阅”数组——它被解释为一个 Observable 发射两个值,true 和 false。
如果 angular 路由器事件被触发,下面的函数应该 return 为真。
private routeChanged$(): Observable<boolean> {
return this.router.events.pipe(
filter(event => event instanceof NavigationEnd),
mapTo(true),
startWith(false),
untilDestroyed(this)
);
}
它工作正常但它也应该在事件被触发后再次重置初始值(false)所以 我基本上想在它第一次发出 true 后将布尔值设置回 false (当路线改变时) (抱歉我的英语不好,我希望你明白我的意思)
你的意思是它应该在 true
之后立即再次发出 false
吗?
在那种情况下你可以这样做:
private routeChanged$(): Observable<boolean> {
return this.router.events.pipe(
filter(event => event instanceof NavigationEnd),
switchMapTo([true, false]),
startWith(false),
untilDestroyed(this)
);
}
switchMapTo
将“订阅”数组——它被解释为一个 Observable 发射两个值,true 和 false。