Итак: у меня есть эта «проблема», когда у меня слишком много маршрутов, и мне нужно добавить охрану для всех этих маршрутов. Так как я использую «обстрелянный маршрут», я думал, что смогу их мутировать при обстреле, проблема здесь в том, что «мутированные маршруты» загружаются как пустые конфигурации маршрутов, «Invalid configuration of Route ''.
», ... могу ли я сделать это в AOT? Или я застрял с написанием караула вручную на всех маршрутах?
export class Route {
static withShell(routes: Routes): Routes {
return [{
path: '',
component: ShellComponent,
children: [
{
path: '',
canActivate: [AuthenticationGuard],
children: ParseRoutesForUrlbarChangeGuardIntroduction(routes)
}
],
canActivate: [SingleSignOnGuard, RedirectGuard]
}];
}
}
export function RouteWithPreventUrlGuard(route: Route) {
if (route.redirectTo || !route.component) return route;
if (route.children) {
route.children.forEach((r, i) => {
const canDeactivate = r.canDeactivate;
if (!canDeactivate || canDeactivate && !canDeactivate.find(g => g instanceof PreventUrlbarChangeGuard))
route.children[i] = RouteWithPreventUrlGuard(r);
});
}
return {...route, canDeactivate: [PreventUrlbarChangeGuard, ...(route.canDeactivate || [])]};
}
export function ParseRoutesForUrlbarChangeGuardIntroduction(routes: Route[]) {
return routes.map(r => RouteWithPreventUrlGuard(r));
}