This is the shared
module which I share across my app:
@NgModule({
imports: [
CommonModule,
ModalModule
],
declarations: [],
exports: [
ModalModule
]
})
export class SharedModule {}
This shared
module imports ModalModule
:
import {ModalCloseDirective, ModalOpenDirective, ModalApiService, ModalCloseComponent} from './shared';
import {ModalComponent} from './modal.component';
@NgModule({
declarations: [
ModalCloseDirective,
ModalOpenDirective,
ModalComponent,
ModalCloseComponent
],
imports: [
CommonModule
],
exports: [
ModalCloseDirective,
ModalOpenDirective,
ModalComponent,
ModalCloseComponent
],
providers: [
ModalApiService
]
})
export class ModalModule {}
Then I have a third module, which imports SharedModule
(which exports the ModalModule
):
import {SharedModule} from '../../shared';
@NgModule({
imports: [
CommonModule,
FormsModule,
RouterModule.forChild([
{
path: 'documentation',
component: DocumentationComponent,
children: [
{
path: '',
component: DocumentationListComponent
}
]
}
]),
SharedModule
],
declarations: [
DocumentationListComponent
],
exports: [
RouterModule
]
})
export class documentationModule {}
And then I have this directive modalOpen
:
@Directive({
selector: '[modalOpen]'
})
export class ModalOpenDirective {
modalOpen: string;
constructor(private modalApi: ModalApiService) {}
@HostListener('click')
open(): void {
this.modalApi.open(this.modalOpen);
}
}
But when I use it inside of DocumentationListComponent
's template:
<span [(modalOpen)]="new-item">Add item</span>
I get this:
Can't bind to 'modalOpen' since it isn't a known property of 'span'
Why can't it find the directive in my template?
EDIT: What I want is basically a feature module from this guide: https://angular.io/docs/ts/latest/guide/ngmodule.html