如何从使用内部某些指令的组件访问 DirectivesModule?

How to access DirectivesModule from a component which uses some of the directive inside?

已编辑:建议的解决方案是正确的,我不得不提到 SharedModule 必须导入到使用 DropDownDirective 的子组件的父组件中为了工作。

我正在开发 Angular 4 应用程序,我想使用包含 DirectivesModuleSharedModule 优化其结构。我有一个组件 X,它通过在其中导入 SharedModule 使用 DirectivesModule 中的指令之一,如下所示:

app/X.component.ts


import { SharedModule } from '../shared/shared.module';

并且在组件 X 的视图中,我正在使用这样的指令:

<div class="col-xs-5 dropdown" appDropDown>

应用程序的结构如下:

root
  -- X.component.ts
  -- shared
     -- shared.module.ts
     -- directives
        -- directives.module.ts
        -- dropdown.directive.ts

我在做什么,正在将 DirectivesModule 导入 SharedModule,如下所示:

import { CommonModule } from '@angular/common';
import { DirectivesModule } from './directives/directives.module';

@NgModule({
  imports: [
    CommonModule
  ],
  declarations: [
  ],
  exports: [
    DirectivesModule
  ]
 })
 export class SharedModule { }

DirectivesModule 像这样导入和导出 DropDownDirective:

   import { DropDownDirective } from './dropdown.directive';
   .....
    exports: [
     DropDownDirective,
   ]

然后,SharedModule通过上述方式导入到X.component。 问题是该指令不起作用。它应该对元素应用 class 'open' 但没有这样做。

我不确定这是否是实现该结构的正确方法,因此欢迎提出更改建议,我们将不胜感激。

DirectivesModule 添加到您的导入中

@NgModule({
  imports: [
    CommonModule,
    DirectivesModule
  ], 
......