【发布时间】:2017-07-31 02:38:46
【问题描述】:
是否可以在 angular2 的主要组件之前解析服务?
【问题讨论】:
是否可以在 angular2 的主要组件之前解析服务?
【问题讨论】:
在app的默认下执行resolve中的服务
export const appRoutes: Routes = [
{path:'', pathMatch: 'full', redirectTo: 'home'},
{
path: 'home',
component: AppComponent,
resolve: function(){
//your service call
},
{
path: 'path1/:id',
component: YourComponent,
resolve: {
someObject: ComponentResolve
}
}
];
@Injectable()
export class ComponentResolve implements Resolve<Interface> {
constructor(private yourService: YourService) {}
resolve(route: ActivatedRouteSnapshot) {
return this.yourService.getMethod(route.params['id']);
}
【讨论】:
path: '' 重定向到path: 'home', component: 'HomeComponent',AppComponent 由@NgModule({.....bootstrap:[AppComponent]}引导)`
platformBrowserDynamic().bootstrapModule(AppModule);
{path:'', pathMatch: 'full', redirectTo: 'home'},{path: 'home', component: HomeComponent} 以上都是主要路线
AppComponent,这不会使其成为引导组件。
在主路由文件中,在最顶层,您可以提及解析器名称,该名称将在最顶层组件加载之前解析(即引导组件)
{
path: '',
resolve: AppComponentResolve,
children: [
{
path: 'somePath',
component: SomeCOmponent
}]
}
并将解析器作为可注入组件添加到 appComponent 文件中
@Injectable()
export class AppComponentResolve implements Resolve<any> {
resolve(){
//return resolved data
}
}
【讨论】: