我目前正在尝试将一种angularjs方法转换为angular。在angularjs中,我使用ui-router事件处理对路由进行一些重定向,以避免在重新加载页面或使用深层链接导航时发生解析和状态更改。在angularjs中,我向某些状态添加了所需功能的数组,然后使用该数据来确定在过渡期间是否需要重定向。 ui-router的状态层次结构也允许遵循父级的要求。
我正在尝试使用本机路由器在angular6 atm中执行相同的操作,但是面临一个问题-无法通过均匀处理来获取路由配置。
const routes: Routes = [
{ path: '', redirectTo: 'login', pathMatch: 'full' },
{ path: 'login', component: LoginComponent, data: { req: { auth: false } } },
{ path: 'home',
component: HomeLayoutComponent,
data: { req: { auth: true } },
children: [
{ path: '', pathMatch: 'full', redirectTo: '/home/(content:roles)' },
{ path: 'roles', component: RolesComponent, outlet: 'content' },
{ path: 'pro', component: ProComponent, outlet: 'content' },
]
}
];
这是我的示例路由配置。我想要得到的是,如果用户导航到“登录”路由,那么我检查了路由的配置,看到认证应该是假的,如果不是的话,则应重定向到本地。
我有一个用于路由器事件的事件处理程序
export class AppComponent implements OnInit {
title = 'app';
constructor ( private _core: EngineService, private router: Router ) { }
ngOnInit() {
this.router.events.subscribe((event) => {
console.log(event, this.router);
});
}
但是,我进去的是:
RoutesRecognized {id: 1, url: "/", urlAfterRedirects: "/login", state: RouterStateSnapshot}
仅具有URL,我无法可靠地将其映射到router.config。我查看了有关此问题的许多问题,但所有这些问题都是关于获取URL的。关于如何获取实际配置的任何建议?