У меня есть следующие пути маршрутизации для модуля моего приложения Angular:
@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();
}
}
Теперь я изменил структуру маршрутизации всего приложения, и я вызываю вышеуказанный модуль из других модулей, в ленивой загрузке, используя атрибут 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
из модуля вызывающего абонента?