Как мне зарегистрировать прослушивание маршрутизации в rxjs6 и изменить заголовок? - PullRequest
0 голосов
/ 21 сентября 2018
  • в rxjs5 (приложение angular6), я использую

    this.router.events
      .filter(event => event instanceof NavigationEnd)
      .map(() => this.activatedRoute)
      .map(route => {
        while (route.firstChild) {
          route = route.firstChild;
        }
        return route;`enter code here`
      })
      .filter(route => route.outlet === 'primary')
      .mergeMap(route => route.data)
      .subscribe((event) => {
        this.titleService.setTitle(event['title'] + '-' + APP_NAME);
        this.appDataLogic.urlChanged();
    });
    
  • Но в rxjs6, route равно {}, так чтоесть ошибка property firstChild does not exist on type {}.

    this.router.events.pipe(
      filter(event => event instanceof NavigationEnd),
      map(() => { return this.activatedRoute }).pipe(),
      map(route => {
        while (route.firstChild) {
          route = route.firstChild;
        }
        return route;
     }),
     filter(route => route.outlet === 'primary'),
     mergeMap(route => route.data)
     ).subscribe((event) => {
     this.titleService.setTitle(event['title'] + '-');
    })
    
  • Как мне переписать его с помощью rxjs6?Большое спасибо.

1 Ответ

0 голосов
/ 21 сентября 2018

Спасибо за ответы, я нашел решение:

```
 this.router.events.pipe(
      filter(event => event instanceof NavigationEnd),
      map(() => this.activatedRoute),
      map(route => {
        while (route.firstChild) {
          route = route.firstChild;
        }
        return route;
      }),
      filter(route => route.outlet === 'primary'),
      mergeMap(route => route.data)
    ).subscribe((event) => {
      //some code
    })
```

Но у меня есть другой вопрос, он используется в ngOnInit() в app.component.ts, app.component.ts - мой корневой компонентДолжен ли я отменить подписку на ngOnDestroy()?

...