我有我的角度应用程序的模块下面的路由路径:Angular router:如何将数据传递给延迟加载模块?
@NgModule({
imports: [
RouterModule.forChild([
{
path: 'documents',
data: { myObject: MyConstants.OPTION_ONE },
children: [
{
path: ':ID_DOC',
children: [
{ path: 'edit', component: EditDocumentComponent },
{ path: '', component: DocumentDetailsComponent },
]
},
{ path: 'add', component: AddDocumentComponent },
{ path: '', component: DocumentsListComponent }
]
}
])
],
exports: [
RouterModule
]
})
export class DocumentsManagementRoutingModule {
}
正如你可以看到我用data
属性来传递“文件”的一些数据,以每一条路径,所以我可以从任何得到它在路由路径声明的组成部分:
例如,下面是我如何DocumentDetailsComponent
获取数据:
export class DocumentDetailsComponent implements OnDestroy {
private obsData: Subscription;
private option: any;
constructor(private route: ActivatedRoute) {
this.obsData = this.route.data.subscribe(data => {
this.option = data['myObject'];
});
}
ngOnDestroy(): void {
this.obsData.unsubscribe();
}
}
现在我改变了整个应用程序的路由结构,我称之为一个bove模块从其他模块进行延迟加载,使用loadChildren
属性。我以同样的方式传递数据:
@NgModule({
imports: [
RouterModule.forChild([
{
path: 'users',
loadChildren: 'app/documents/documents.module#DocumentsModule',
data: { myObject: MyConstants.OPTION_ONE }},
{
path: ':ID_USER',
children: [
{ path: 'edit', component: EditUserComponent },
{ path: '', component: UserDetailsComponent },
]
},
{ path: 'add', component: AddUserComponent },
{ path: '', component: UserListComponent }
])
],
exports: [
RouterModule
]
})
export class UsersManagementRoutingModule {
}
,我做了所有调用DocumentsManagementRoutingModule
其他模块一样,改变myObject
财产MyConstants.OPTION_TWO
,MyConstants.OPTION_THREE
等,根据我的需求。
然后,由于我不知道调用我的懒加载模块的模块及其相关路径,如何从调用者模块获取data
属性?
https://stackoverflow.com/questions/44796671/pass-parameter-into-modules – Gambo
的可能DUP在我的情况下使用一个懒惰的加载模块是强制的 – smartmouse
@smartmouse有一行'r.url.lastIndexOf(“/”));'非法。 –