已编辑:建议的解决方案是正确的,我不得不提到必须将SharedModule
导入到子组件的父组件中,该子组件使用DropDownDirective才能工作。
我正在研究Angular 4应用程序,我想使用包含SharedModule
的{{1}}来优化其结构。我有一个组件X,它使用DirectivesModule
中的一个指令导入DirectivesModule
,如下所示:
应用程序/ X.component.ts
SharedModule
在组件X的视图中,我正在使用如此指令:
import { SharedModule } from '../shared/shared.module';
该应用程序的结构如下:
<div class="col-xs-5 dropdown" appDropDown>
我在做什么,将DirectivesModule导入SharedModule,如下所示:
root
-- X.component.ts
-- shared
-- shared.module.ts
-- directives
-- directives.module.ts
-- dropdown.directive.ts
DirectivesModule导入和导出DropDownDirective如下:
import { CommonModule } from '@angular/common';
import { DirectivesModule } from './directives/directives.module';
@NgModule({
imports: [
CommonModule
],
declarations: [
],
exports: [
DirectivesModule
]
})
export class SharedModule { }
然后, import { DropDownDirective } from './dropdown.directive';
.....
exports: [
DropDownDirective,
]
按照上述方式导入X.component。
问题是该指令不起作用。它应该对元素应用“打开”类但不执行它。
我不确定这是否是实现结构的正确方法,因此欢迎提出建议,并且非常感谢任何帮助。
答案 0 :(得分:1)
将DirectivesModule
添加到您的导入
@NgModule({
imports: [
CommonModule,
DirectivesModule
],
......