Ich habe eine Direktive und ich möchte es in mehreren Modulen verwenden. Die Deklaration auf jedem Modul erzeugt einen Fehler. Daher habe ich versucht, es in einem geteilten Modul zu deklarieren und dieses geteilte Modul in andere Module zu importieren. Es hat jedoch nicht funktioniert. Es funktioniert nur, wenn es genau auf dem komponenteneigenen Modul deklariert ist. HierAngular2 - Richtlinie funktioniert nicht, wenn nicht in demselben Modul
ist mein SharedModule
:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { GeneralDataService } from './general-data.service';
import {ModalDirective} from '../directives/modal.directive';
@NgModule({
imports: [
CommonModule
],
providers: [GeneralDataService],
declarations: [ModalDirective]
})
export class SharedModule { }
Und das Modul, das ich will ModalDirective
zu verwenden:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MyComponent } from './patient.component';
import {SharedModule} from '../shared/shared.module';
@NgModule({
imports: [
CommonModule,
SharedModule
],
providers: [ ],
declarations: [ MyComponent ]
})
export class MyModule { }
In MyComponent
Komponente:
export class MyComponent implements OnInit, AfterViewInit {
@ViewChild(ModalDirective) modal: ModalDirective;
...
}
modal
in MyComponent
ist undefined
(auch in ngAfterViewInit
) wenn ModalDirective
nicht in MyModule
deklariert ist. Weiß jemand, wie man das repariert?
Arbeitete
export
. Vielen Dank! –Thx Fredrik! Meine Direktive enthält eine Injektion von 'TemplateRef'. Wenn ich jedoch die Anweisung in die 'NgModule.exports'-Liste hinzufüge, habe ich einen Fehler mit dem Hinweis 'Kein Provider für TemplateRef!' Erhalten. Irgendwelche Ideen? – cosmozhang
@cosmozhang - kann nicht wirklich sagen, ohne Ihren Code zu sehen, aber werfen Sie einen Blick auf diesen Thread: https://StackOverflow.com/Questions/35932074/angular2-No-Provider-for-TemplateRef-Ngf-TemplateRef –