在我的应用程序中,我在配置路由器时动态加载一组视图标识符。然后我导航到第一个可用的视图:
@autoinject
export class App {
router: Router;
constructor(private viewManager: ViewManager) {
}
configureRouter(config: RouterConfiguration, router: Router) {
this.router = router;
config.title = 'My Application';
config.map([
{ route: [''], name: 'start', moduleId: './views/myapp-start', nav: false, title: 'Start' },
{ route: ['otherroute'], name: 'other', moduleId: './views/myapp-other', nav: true, title: 'Other' }
]);
this.loadViews();
}
private loadViews() {
this.viewManager.getViews().done(views => {
for (let i = 0; i < views.length; i++) {
this.router.addRoute({ route: `view-${i + 1}`, name: `view-${i + 1}`, moduleId: './views/myapp-dynamic', nav: true, title: views[i], settings: { name: views[i] } });
}
this.router.refreshNavigation();
this.router.navigateToRoute('view-1');
});
}
}
只要用户使用不带参数的URL(例如http://www.example.com)调用我的应用程序,此方法就可以正常工作。但是一旦用户开始使用其中一个动态路由(例如http://www.example.com/#/view-1)打开应用程序,应用程序就会失败,因为在打开应用程序时,此路由尚不可用。
如何在应用程序启动期间启动路由器之前确保加载和添加动态路由?