2017-01-02 10 views
7

遅延ロードされたモジュールでディレクティブを動作させることはできません。私はドキュメントを読んで、単に私のメインモジュールの宣言配列にディレクティブを追加しました。このディレクティブは、そのモジュールで期待通りに動作しますが、遅延ロードされたモジュールでは機能しません。それもあるため、テンプレートのエラーのオープンする怠惰なロードされたモジュールを防ぎ:ディレクティブはサブモジュールでは機能しません

Can't bind to 'myHighlight' since it isn't a known property of 'p' 

は、ここに私のPlunkerです。

あなたのディレクティブはAppModuleで宣言され、それはそこにのみ利用可能だからだそうだ子に移動」をクリックした後

+0

これはドキュメントに記載されていますが、メインモジュールのようにわかりません。ディレクティブが正しく宣言されています... https://angular.io/doc s/ts/latest/guide/attribute-directives.html#!#your-directive-isn-t-working- –

+0

問題を明確にするか、別の問題である可能性がありますか?コードへのリンクを投稿するときは、問題のコードがその質問に付随していることを確認してください。 –

+0

@RomanC説明が悪いと申し訳ありません。私は質問を編集しました。 – omeralper

答えて

17

をコンソールにエラーをチェックしてください。あなたは両方のモジュールにディレクティブを使用する場合は、SharedModuleを作成し、そこから宣言して輸出ディレクティブ、その後、あなたのAppModuleとあなたのChildModuleSharedModuleをインポートすることができます。

@NgModule({ 
    declarations: [ HighlightDirective ], 
    exports: [ HighlightDirective ] 
}) 

export class SharedModule {} 

今、あなただけのAppModuleSharedModuleを追加する必要があります'sとChildModuleのインポート。

注:

あなたはそれが一度だけ宣言することができるので、AppModuleの宣言から、あなたのディレクティブを削除する必要があります。

+1

しかし、AppModuleで宣言された宣言は、アプリケーション全体でグローバルに利用できないはずですか? – echonax

+3

@echonaxいいえ、グローバルに入手可能なものを作るための唯一の方法は、少なくとも今のところ私が記述したものです。 –

0

私はこのプロジェクトで同様の問題に直面しました。私はshared.moduleを持っていたが、それはまだ私はこのコード

<div class="avatar" 
    fileUploader 
    [pathForUploading]="'path'" 
    (onFileUploaded)="updateAvatar()"></div> 

を持っていたし、それが誰か

を助けることを願っています

pathForUploading="path" 

に呼び出して属性を変更した後になくなってエラー

Can't bind to 'pathForUploading' since it isn't a known property of 'div'

を投げました

関連する問題