1

我正在使用 RC5 编写 Angular2 应用程序。

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

我怎样才能做到这一点?

每条路线上都有“canActivate”属性,但如果我想在每次用户导航到新路线时做一些事情,我会发现它与它有更多关系。主要用于身份验证目的,您只希望通过身份验证保护少数路由,但在我的情况下,我想在 AppComponent 加载时加载配置。不是在每条路线激活或导航上。

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

4

2 回答 2

1

您可以在canActivate警卫中存储初始重新导航已完成,并且仅用于后续调用 return true

您可以使用单个路由配置路由器

{ path: '**', InitComponent }

并在InitComponent加载您的配置时,重新配置路由器(通过所有路由),然后转发到最初请求的路径。

另请参阅Angular 2 动态路由构建和组件级别权限

于 2016-08-25T06:26:47.717 回答
1

您应该创建一个执行请求的解析器​​,将解析器添加到路由并在组件的 onInit 中获取解析的配置数据。

组件.路线:

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']);
    }
}

组件1:

ngOnInit() {
let that = this;
 this.route.data.subscribe(data => {
 that.config= data['data'];
于 2016-08-25T06:40:43.610 回答