我遇到了子路由器/路由的问题。 (下面的缩写示例。)
app.ts
config.map([
{ route: "auth", name: "auth", moduleId: "auth" }
]);
AUTH / index.ts
config.map([
{ route: "", redirect: "login" },
{ route: "login", name: "login", moduleId: "./login", title: "Login" }
]);
认证step.ts
run(navigationInstruction, next) {
if (navigationInstruction.getAllInstructions().some(i => i.config.auth)) {
if (!this.authContext.isAuthenticated())
return next.cancel(this.router.navigateToRoute('auth/login', { return: true }));
}
return next();
}
如果请求安全路线,我会AuthenticationStep
重定向到auth/login
。例如,如果我尝试转到安全路线(例如admin/something
),我就会收到以下错误。但是,如果我直接导航到auth/login
,则会正确显示登录页面。
无法找到名称为“auth / login”的路由。
答案 0 :(得分:2)
添加一个空路由,并将重定向添加到子路由器的配置中:
{ route: '', redirect: 'login' }
然后,将您的来电更改为navigateToRoute
,以导航至auth
。
run(navigationInstruction, next) {
if (navigationInstruction.getAllInstructions().some(i => i.config.auth)) {
if (!this.authContext.isAuthenticated())
return next.cancel(this.router.navigateToRoute('auth', { return: true }));
}
return next();
}