Я пытаюсь загрузить домашнюю страницу своего приложения для посетителей, которые не прошли проверку подлинности.
const routes: Routes = [
{ path: '', loadChildren: './home/home.module#HomeModule' }
...
Прошедшие проверку пользователи должны получать свои фиды через этот модуль, также по пустому пути.
{ path: '', loadChildren: './feed/feed.module#FeedModule', canActivate: [IsAuthenticationGuard] },
{ path: '', loadChildren: './home/home.module#HomeModule', canActivate: [NoAuthenticationGuard] },
Я ожидаю, что IsAuthenticationGuard
завершится с ошибкой и загрузит домашний компонент по умолчанию.
Вместо этого он загружает пакет модуля подачи (показанный на вкладке сети), но ничего не загружает в розетку маршрутизатора.,Очень запутанно.
Как я могу сделать условную маршрутизацию (на основе охранников или иным образом) по пустому пути?
Обновление: вот охранники по запросу
@Injectable()
export class IsAuthenticationGuard implements CanActivate {
constructor(
private authenticationService: AuthenticationService
) { }
public canActivate(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Observable<boolean> {
return this.authenticationService.isAuthenticated.pipe(take(1), map((isAuthentication) => {
return isAuthentication;
}));
}
}
Я исследовал новый urlTree
, и это здорово, что теперь вы можете перенаправлять через маршрут, а не в охрану. Однако переадресация не представляется применимой, если вы пытаетесь использовать один и тот же маршрут с другим модулем. Пожалуйста, исправьте меня, если есть способ.