【发布时间】:2016-07-25 14:23:27
【问题描述】:
我尝试从 angular2 动态构建路由(从服务器获取路由配置),然后解析它并为组件路由生成指令(我有父路由配置和子路由到不同的组件,因为我不知道如何定义将子组件路由到一个 main.app.ts 文件中)。
问题是当应用程序启动并尝试创建路由配置和 routeGenerator 尚未构建路由(异步延迟)可以t parse routes data (because async delay, so routesData undefined now) and app is crashig. I dont 知道该怎么做。寻找生命周期引擎盖(有些像 - @Angular2BeforeAppStarted )但什么也没找到。
import {Component, Input, OnChanges} from 'angular2/core';
import {RouteConfig, RouterOutlet, ROUTER_DIRECTIVES, Router} from 'angular2/router';
/* ------- !Angular 2 native components ---------*/
import {routeGenInstance} from '../../config/routes/patient_routes';
protected const BUILT_MODULE_PATH: string = '/built/modules/patients/';
@Component({
template: `
<router-outlet ></router-outlet>
`,
directives: [RouterOutlet, ROUTER_DIRECTIVES]
})
@RouteConfig(routeGenInstance.getRouteDefinitions())
export class PatientsComponent {
@Input();
constructor() {}
}
我也尝试以相同的方式更新路线(但应用程序立即崩溃,因为导航组件中的导航链接没有正确的链接方式)
import {RouteConfig, RouterOutlet, ROUTER_DIRECTIVES, Router} from 'angular2/router';
constructor(
private router: Router
) {
router.config([
routeGenInstance.getRoutesDefinition()
])
}
我的路由定义使用异步加载器,因此它们是正确的并且可以在没有异步延迟的情况下工作。我不知道如何让 Angular 等待我的路线定义并开始运行应用程序。
请帮帮我。谢谢。
UPD:
@Thierry 再次感谢您的帮助。你真棒,我的朋友和导师。最后一个问题(最后一个)。你能告诉我如何将 routeConfig 定义到一个带有子子路由定义的应用程序文件中吗? 它的意思。我有进入应用程序文件的主要级别路由
{
path: '/',
name: 'Dashboard',
component: DashboardComponent,
useAsDefault: true
},
{
path: '/patients/...',
name: 'Patients',
component: PatientsComponent
},
和患者子路由进入患者组件(@RouteConfig)
{
path: '/', // root is appRoot/patients/...
name: 'PatientsList', component...},
{
"name": "Chart",
"path": "/chart/:id", component...
},
如何将此路由配置仅定义到一个 app.file 中? (如何在一个文件中配置带有子路由的路由)?
【问题讨论】:
-
RouterOutlet已包含在ROUTER_DIRECTIVES中,无需再次添加。 -
routeGenInstance.getRouteDefinitions()长什么样子?它返回什么?
标签: asynchronous routes angular delay