router.navigate не работает и позволяет операторам ниже этого выполнить - PullRequest
0 голосов
/ 08 июля 2019

Я вызываю 2 метода на ngOnInit: один метод проверяет параметры пути , а другой ищет параметры запроса в URL.

Вот метод ngOnInit :

ngOnInit() {
  this.getFlavorAndService();
  this.getQueryParams();
}

Вот метод, который ищет параметры пути :

getFlavorAndService(): void {
    this.routePathParamsSubscription = this._route.params.subscribe(params => {
      const flavor: string = params.flavor;
      const service: string = params.service;

      if (flavor) {
        if (this._dataService.flavors.includes(flavor)) {
          this.flavor = flavor;
        } else {
          this._router.navigate(['/page-not-found']);
        }
      } else {
        this._router.navigate(['', this._dataService.DEFAULT_FLAVOR, this._dataService.DEFAULT_SERVICE]);
      }

      if (service) {
        if (this._dataService.isEdsService(service)) {
          this.service = service;
        } else {
          this._router.navigate(['/page-not-found']);
        }
      } else {
        this._router.navigate(['', this._dataService.DEFAULT_FLAVOR, this._dataService.DEFAULT_SERVICE]);
      }
    });
  }

Вот метод, который ищет quary params :

getQueryParams(): void {
  this.routeQueryParamsSubscription = this._route.queryParams.subscribe(queryParams => {
    ..... some code

    if (isEmpty(queryParams)) {
      this._router.navigate(['', this._dataService.flavor, this.service]);
    } else {
      this._router.navigate(['', this._dataService.flavor, this.service], { queryParams: queryParams, queryParamsHandling: 'merge' });
    }
  });
}

Мой вопрос заключается в том, что, если передан неправильный аромат, я должен быть перенаправлен на /page-not-found url, а остальные операторы не должны выполняться вообще. Вместо этого, когда я передаю недопустимую версию или службу, веб-приложение не переходит на page-not-found url, и остальные операторы метода выполняются (из методов getQueryParams). Он не перенаправляет, даже если я использую return this._router.navigate(['/page-not-found']);.

Если приложение не перейдет на page-not-found и не остановится?

1 Ответ

0 голосов
/ 08 июля 2019

только для того, чтобы убедиться, что функция конструктора должна иметь вид

import { ActivatedRoute, Router } from "@angular/router";
 constructor(private route: ActivatedRoute, private router: Router) {}

и используйте return this._router.navigate(['/page-not-found'])

...