Я хотел бы получить значение из значения обещания, а затем вернуть для canActive логическое значение - PullRequest
0 голосов
/ 10 июля 2019

Я пытался использовать значения из значений для использования защиты маршрутизатора с путем

Я пытался использовать для получения значений из обещания в canActivate() для защиты маршрутизатора.

private routeURL = new Subject<string> ();

canActivate() {
    if (this.authenticationService.currentUserValue) {
        this.getNavigationEnd().then(res => console.log('2 ' + res) );
// I want to get this.getNavigationEnd()'s result[true or false] for router guard's canActivate().

        return true;
    }
    this.router.navigate(['/401']);
    return false;
  }

  async getNavigationEnd() {
    this.router.events.pipe(
      filter(event => event instanceof NavigationEnd)
    ).subscribe((result) => {
      let value: any;
      value = result;
      this.routeURL.next(value.url);
    });
    const valueArray = this.routeURL.asObservable();
    let bool = false;
    await valueArray.subscribe(value => {
      console.log(value);
      if (this.menuURIarray.includes(value)) {
        bool = true;
      } else {
        bool = false;
      }
    });
    console.log('1 ' + bool);
    return bool;
  }

Если возможно получить обещание со значением, защита маршрутизатора может проверить путь с путями маршрутизатора.

this.menuURIarray - массив списка меню. и он сравнивается с навигационным путем RouteEnd.

И затем, если это не то же самое с этим массивом и navigationEnd, он возвращает истину или ложь.

Тогда canActivate использует это для проверки. это мой сценарий для защиты роутера

1 Ответ

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

canActivate может вернуть оба значения boolean, Promise<boolean>, Observable<boolean>. В вашем случае canActivate может просто вернуть Observable или Promise .

Этот пример фильтра NavigationEnd и возврат true.

canActivate() {
    return this.router.events.pipe(
      filter(event => event instanceof NavigationEnd),
      map((event: NavigationEnd) => true),
    )
  }

Документ: canActivate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...