1

在我的导航服务中,我想在一个订阅中订阅当前选择的路线 url 和数据。

要订阅路由 url,我会写:

constructor( router: Router, activatedRoute: ActivatedRoute ) {
    router.events.pipe(
        filter( event => event instanceof NavigationEnd ),
        map( () => activatedRoute ),
        map( r => {
            while ( r.firstChild ) {
                r = r.firstChild;
            }
            return r;
        } ),
        switchMap( route => route.url ),
    ).subscribe( u => {
        // ... do something with u
    } );
}

现在我还想订阅当前路由的 data-Observable。如何将 observable 拆分为 url-part 和 data-part 并为两个 observables 订阅一次?

我试过zip(), partition()combineLatest()但没有成功。还是我应该使用concatMap()

4

1 回答 1

1

使用 combine latest 来合并 2 个 url 和数据流

switchMap(route => combineLatest([route.url, route.data]))
于 2020-06-30T12:16:05.137 回答