Angular2 RC5 - 完成加载配置文件后的路由

时间:2016-08-25 06:19:22

标签: angular angular2-routing angular2-router3

我正在使用RC5编写Angular2 App。

当AppComponent加载时,我希望应用程序使用http请求配置文件,并且一旦加载,我希望应用程序导航到指定的路由?

我怎样才能做到这一点?

每条路线都有'canActivate'属性,但如果我想在每次用户导航到新路线时都做某事,我会发现它还有更多相关内容。主要用于身份验证,您只需要使用身份验证保护少数路由,但在我的情况下,我想在AppComponent加载时加载配置。不是每个路线激活或导航。

希望我清楚自己想要实现的目标。

2 个答案:

答案 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'];