在Angular2中禁用应用程序加载/路由
发布时间:2020-12-17 17:51:02 所属栏目:安全 来源:网络整理
导读:我有一个angular2应用程序(RC6版本),其中一些重要的全局参数使用在启动时收集此文件的服务从配置文件加载: @NgModule({imports: [ BrowserModule,FormsModule,HttpModule,AppRoutes,SomeCustomModule ],declarations: [ AppComponent ]providers: [ Configu
我有一个angular2应用程序(RC6版本),其中一些重要的全局参数使用在启动时收集此文件的服务从配置文件加载:
@NgModule({ imports: [ BrowserModule,FormsModule,HttpModule,AppRoutes,SomeCustomModule ],declarations: [ AppComponent ] providers: [ ConfigurationService,{ provide: APP_INITIALIZER,useFactory: (config: ConfigurationService) => () => { return config.load().then(configParams=> { return true;}); },deps: [ConfigurationService,HttpModule],multi: true } ],bootstrap:[ AppComponent ] }) export class AppModule { } 如本片段所示,我使用我称之为ConfigurationRervice的内容,它通过http调用读取配置文件并返回一些参数(作为Promise).如果一切顺利,应用程序将完美加载,并且可以在子模块等中访问这些配置参数. 问题是,如果此配置文件未按预期加载,如何停止应用程序加载子模块? (请注意,AppComponent实质上只是一个路由器插座,重定向到其他路由,由多个子模块定义).我可以“禁用”或重定向到错误页面而不是加载由请求的路由定义的模块/组件吗? 解决方法
要禁用页面的初始路由,并根据ConfigurationService进行处理,您必须在AppRoutes对象中将
initialNavigation 设置为false:
export const AppRoutes = RouterModule.forRoot(ROUTES,{initialNavigation : false}); 在ConfigurationService中,您必须注入路由器并根据您的配置使用它进行导航. 另一种选择是使用canActivate路由钩子.在此挂钩中,您可以注入ConfigurationService并让它确定是否可以加载此页面. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |