Множество наблюдаемых в Route guard, но ждите только одного - Angular 5 - PullRequest
0 голосов
/ 22 ноября 2018

В моем приложении есть охранник маршрута, в котором мне нужно проверить наличие двух наблюдаемых, если у кого-то есть успех, я должен разрешить маршрут или блокировку.

Защита маршрута:

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): any {
return (this.isValid().map(valid => {
            console.log(valid);
            return valid;
        }) || this.isValidFromApi().map(valid => {
            console.log(valid);
            return valid;
        }));
} //how to achieve something like this
}
private isValid() {
        return this.service.details.map(resp => {
            console.log(resp);
            if (resp.data) {
                return true;
            } else {
                return false;
            }
        });
    }

    private isValidFromApi() {
        return this.service.getKeys().map((response) => {
            console.log(response);
            if (response) {
                return true;
            } else {
return false;
            });
        }

Поэтому, если кто-либо из isValid () или isValidFromApi () вернет true, средство защиты маршрута canActivate должно быть активным.Как этого добиться?Я не хочу ждать завершения обоих вызовов, потому что this.service.details на самом деле представляет собой BehaviorSubject, который содержит ответ this.service.getKeys ().

Есть ли другой способ добиться этого??

Заранее спасибо

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