如何从使用内部某些指令的组件访问 DirectivesModule?
How to access DirectivesModule from a component which uses some of the directive inside?
已编辑:建议的解决方案是正确的,我不得不提到 SharedModule
必须导入到使用 DropDownDirective 的子组件的父组件中为了工作。
我正在开发 Angular 4 应用程序,我想使用包含 DirectivesModule
的 SharedModule
优化其结构。我有一个组件 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
],
......
已编辑:建议的解决方案是正确的,我不得不提到 SharedModule
必须导入到使用 DropDownDirective 的子组件的父组件中为了工作。
我正在开发 Angular 4 应用程序,我想使用包含 DirectivesModule
的 SharedModule
优化其结构。我有一个组件 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
],
......