我正在使用RC5编写Angular2 App。
当AppComponent加载时,我希望应用程序使用http请求配置文件,并且一旦加载,我希望应用程序导航到指定的路由?
我怎样才能做到这一点?
每条路线都有'canActivate'属性,但如果我想在每次用户导航到新路线时都做某事,我会发现它还有更多相关内容。主要用于身份验证,您只需要使用身份验证保护少数路由,但在我的情况下,我想在AppComponent加载时加载配置。不是每个路线激活或导航。
希望我清楚自己想要实现的目标。
答案 0 :(得分:1)
您可以在canActivate
后卫中存储已完成初始重新导航的内容以及后续调用仅返回true
。
您可以使用单一路径配置路由器
{ path: '**', InitComponent }
并在InitComponent
加载您的配置,重新配置路由器(通过所有路由),然后转发到最初请求的路径。
另见Angular 2 Dynamic Route Building & Component Level Permissions
答案 1 :(得分:1)
您应创建一个执行请求的解析程序,将解析程序添加到路径并在组件的onInit中获取已解析的配置数据。
Component.Route:
export const routes: Route[] = [
{ path: ':id', component: Component1, resolve: { data: Comp1Resolver }}
];
Comp1Resolver:
@Injectable()
export class Comp1Resolverimplements Resolve<Config> {
constructor(private configService: ConfigService) { }
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Config> {
return this.configService.get(route.params['id']);
}
}
的Component1:
ngOnInit() {
let that = this;
this.route.data.subscribe(data => {
that.config= data['data'];