2017-11-23 6 views
0

Ist es möglich, Directive in Component zu importieren? Ich möchte den Import in ngModule.declarations vermeiden.Richtlinie in Komponente in Winkel importieren

Ich folge CustomDirective for Telerik Angular Grid. Es wird empfohlen, Grid mit customDirective zu füllen, aber ich werde diese Direktive nur in einer Komponente benötigen, also möchte ich den Import in ngModule vermeiden, um Namenskollisionen zu vermeiden.

Edited:
Ich habe versucht, mit viewProviders, aber es funktioniert nicht. Here ist plunkr, die (Richtlinie eingeführten ngModule) arbeitet:

@NgModule({ 
    imports: [ BrowserModule ], 
    declarations: [ 
    AppComponent, 
    HighlightDirective 
    ], 
    bootstrap: [ AppComponent ] 
}) 
export class AppModule { } 

und here ist plunkr, die nicht funktioniert. (Richtlinie in der Komponente importiert):

@NgModule({ 
    imports: [ BrowserModule ], 
    declarations: [ 
    AppComponent, 
    ], 
    bootstrap: [ AppComponent ] 
}) 
export class AppModule { } 

@Component({ 
    moduleId: module.id, 
    selector: 'my-app', 
    templateUrl: 'app.component.html', 
    viewProviders: [HighlightDirective] 
}) 
export class AppComponent { 
    color: string; 
} 
+0

Wenn Sie Namenskollisionen vermeiden möchten, dann erstellen Sie dedizierte '@ NgModule' https://angular.io/guide/ngmodule#feature-module' Es gibt widersprüchliche Direktiven' – yurzui

+0

Ich sehe auch keinen Sinn beim Import in NgModule, wenn nur ein oder zwei Komponenten werden es brauchen. – Makla

+0

@Fredrik Lundin schrieb die richtige Antwort hier – yurzui

Antwort

1

Ja, das ist durchaus möglich ist, können Sie Component Dekorateur viewProviders Option verwenden, wie folgt aus:

@Component({ 
    template: '<div myCustomDirective>Hello</div>', 
    selector: 'app-hello', 
    viewProviders: [MyCustomDirective] 
}) 
export class Component {} 

Aber ich sollte warnen das ist nicht wirklich ein Best-Practice , um mit den Modulen zu bleiben.

+0

Ah, guter Fang! –

+0

Ich arbeite nicht für mich. – Makla

+0

Was meinst du mit "funktioniert nicht"? Bitte geben Sie Details an –

Verwandte Themen