У меня проблема с дочерними маршрутизаторами/маршрутами. (Сокращенный пример ниже.)Детский маршрут не найден при перенаправлении, но работает нормально, иначе
app.ts
config.map([
{ route: "auth", name: "auth", moduleId: "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'.
У меня есть маршрут перенаправления на месте уже, извините, я не включил его в пример. Я не хочу переходить к просто 'auth', потому что я хочу знать, почему он не работает, чтобы перенаправить на' auth/login' прямо так. Благодаря! –
(я установил это исправление временно, и он работает. Тем не менее, вы хотите знать _why_.) –
Причина, по которой вы не можете перемещаться с помощью основного маршрутизатора приложения в «auth/login», заключается в том, что этот маршрут не существует на маршрутизаторе приложений. Есть, вероятно, другие способы сделать это, но способ, который я дал, является самым простым. –