我正在构建一些在某些模块中使用的结构指令。 目前,我嵌套了延迟加载的模块,这些模块依赖于其父模块的某些路由。
简而言之,我有一个名为company
的父模块,该模块使用根URL :company
,而后者又懒加载了一个使用URL projects
的模块:company/projects/
。
我的问题是:我有一个结构指令,该指令取决于company
模块中提供的服务。但是,我也希望在我的projects
模块中使用此指令。我应该如何处理?目前,我收到控制台错误:
Can't bind to 'ifCompanyPermission' since it isn't a known property
我应该如何使指令跨模块工作?我已经测试过,这些指令在每个模块中都可以正常工作。
如何加载模块的示例(这些路由属于company
模块):
const routes: Routes = [
{
path: ':company',
component: CompanyComponent,
children: [
{
path: '',
component: IndexComponent,
canActivate: [PermissionGuard],
},
{
path: 'projects',
loadChildren: '../projects/projects.module#ProjectsModule',
},
}
}
];
快速修复:
只需将指令移至我的shared
模块即可。但是,我想知道是否可以共享给子模块。
更新:
我在shared
模块中有结构性指令时注意到一个问题。每当我需要company
或projects
模块中的服务时,它都会创建自己的服务实例。因此,不会使用与company
或projects
模块本身相同的服务实例。与Angular文档中的this page相关。