0

如果触发了角度路由器事件,则下面的此函数应返回 true。

private routeChanged$(): Observable<boolean> {
    return this.router.events.pipe(
        filter(event => event instanceof NavigationEnd),
        mapTo(true),
        startWith(false),
        untilDestroyed(this)
    );
}

它工作正常,但它也应该在事件触发后再次重置初始值(false)所以我基本上想在它第一次发出 true 后将布尔值设置回 false(当路由改变时)(对不起我的英语不好,我希望你明白我的意思)

4

1 回答 1

0

你的意思是它应该立即false再次发射true

在这种情况下,您可以这样做:

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。

于 2021-05-26T20:03:20.943 回答