2016-09-09 4 views
0

RC6にアップグレードするのが苦労しています。私は複数のモジュールを持っており、コンポーネントがモジュールの一部ではないというランタイムエラーが発生します。私はapp.moduleにすべてを入れてみましたが、解決しませんでした。Angular2 - 実行時にコンポーネントがどのモジュールに属しているかを知ることはできますか?

コンポーネントがどのモジュールに含まれているかを(実行時に)伝える方法はありますか?私はトラブルシューティングからこれを必要とします。

Can't bind to 'fullList' since it isn't a known property of 'autocomplete-component'. 1. If 'autocomplete-component' is an Angular component and it has 'fullList' input, then verify that it is part of this module.

それはそれがあるべきように定義されたオートコンプリート成分のようになります。

は、ここに私のエラーです。これはapp.moduleの宣言です。今私はそれを共有モジュールに移動し、すべてのモジュールにインポートしました。私はまだエラーが発生します。

実行時に、オートコンプリートコンポーネントが実際にteモジュールにあることを確認する方法が必要です。さらに、私は、それを使用しているコンポーネントがモジュールであることを確認する必要があります。それはルートによってロードされます。

+0

特定のモジュールにコンポーネントが含まれているかどうかを確認することができます。 –

+0

実行時にこれをどのようにチェックするのですか? –

+0

実行時にモジュールにコンポーネントが存在するかどうかをチェックする際に追加された答え。モジュールは、チェックしているコンポーネントをエクスポートする必要があります。 –

答えて

0

モジュールの各コンポーネントは、ngModuleのDeclarations []部分で宣言する必要があります。それが完了すると、モジュールはそのコンポーネントを見つけることができ、角度プリスキャンはコンポーネントを見つけることができます。あなたは以下試すこと

+0

私はそれを理解しています。コードを見ると、すべてが適切に設定されているようです。しかし、コンポーネントがどのモジュールに含まれているかを実行時にどのように知ることができますか?設計時には、どうすればいいのか分かり、正しいと思う。 –

+0

私は共有モジュールで 'missing'コンポーネントを宣言し、すべてのモジュールがそれをインポートします。私はまだエラーが発生します。 –

+0

共有モジュールからエクスポートしましたか? –

0

import { Compiler} from '@angular/core'; 
constructor(private _compiler: Compiler) {} 

checkComponentInModule(selector){ 

// loop over all your imported Module 
this._compiler.compileModuleAndAllComponentsAsync(<module>).then(_module => { 
      let _componentFactories = _module.componentFactories.filter(_c => { 
       return _c.selector == selector; 
      }); 

      if (!!_componentFactories && _componentFactories.length > 0) { 
       // Yay Component exists in this module!! 
      } 
     }); 
} 

モジュールは、あなたがチェックしているコンポーネントをエクスポートする必要があります。

これが役立ちますように!

+0

私は自分の望むことができないと思う。私はコードが実行されないように、テンプレートの解析エラーを取得しています。しかし、これらの解析エラーはトラブルシューティングに必要なものです。私はエラーで投稿を更新しました。 - –

関連する問題