Как запустить маршрутный символ, если параметр url неверен? - PullRequest
0 голосов
/ 21 сентября 2018

В Angular 6 я использую observable для управления извлечением подробной записи на основе параметра URL, например:

ngOnInit() {
  this.hero$ = this.route.paramMap.pipe(
    switchMap((params: ParamMap) => {
      const id = parseInt(params.get('id'), 10);
      if (!id) {
        throw new Error('Hero id invalid.');
      }
      return this.service.getHeroById(id);
    }),
    catchError(err => {
      this.router.navigate(['/pageNotFound'], {skipLocationChange: true});
      return throwError(err);
    }),
  );
}

В канале catchError я просто перемещаюсь по URL, который не 't существует, что вызывает подстановочный маршрут для запуска и отображения моего PageNotFoundComponent.Это кажется действительно запутанным, но я не понимаю, как еще заставить маршрутизатор отображать этот компонент.Есть ли лучший способ?

Это демо моей настройки: https://stackblitz.com/edit/angular-router-not-found?file=src%2Fapp%2Fhero%2Fhero-detail.component.ts

...