2017-11-23 9 views
0

DirectiveComponentにインポートできますか?私はngModule.declarationsにインポートしないようにしたい。コンポーネントを角型でインポートする

私はCustomDirective for Telerik Angular Gridに従っています。カスタムディレクティブでグリッドを設定することをお勧めしますが、このディレクティブは1つのコンポーネントにのみ必要です。名前の衝突を避けるため、ngModuleでのインポートは避けたいと考えています。

編集:
私はviewProvidersと試みたが、それは動作しません。 Hereは(ngModuleにインポートディレクティブを)作品plunkrです:

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

hereは動作しませんplunkrです。 (コンポーネントにインポートディレクティブ):

@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

名前衝突を避けたい場合は、専用の '@ NgModule'を作成してください。https://angular.io/guide/ngmodule#feature-modules'矛盾するディレクティブがあります.' – yurzui

+0

また、NgModuleにインポートする際にはポイントがありません1つまたは2つのコンポーネントが必要になります。 – Makla

+0

@Fredrik Lundinがここに正解を書いた – yurzui

答えて

1

はい、これは完全に可能である、あなたはこのように、ComponentデコレータのviewProvidersオプションを使用することができます。

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

しかし、私はこれは本当にベストプラクティスではありません警告する必要があります、モジュールに固執するtrty。

+0

ああ、いいキャッチ! –

+0

私は私のために働いていません。 – Makla

+0

「うまくいかない」とはどういう意味ですか?詳細を指定してください。 –

関連する問題