2016-09-02 22 views
4

私はちょうどAngular RC6で始まりました。私は@ NgModuleデコレータ内にHttpModuleをインポートしています。配列のプロバイダがありません

しかし、私はこの例外が発生します:配列のプロバイダがありません!

どうすればこの問題を解決できますか?

constructor(private myService: CustomService, public items: Item[]) { } 
+0

OKですコンストラクタでそれを作成します。エラーメッセージによれば、配列をどこかに注入しようとし、一致するプロバイダが登録されていません。私はそれが7番目のファイル行にあると思います;-) –

+0

エラー:キャッチされていません(約束しています):エラー:app/home/home.htmlのエラー:9:4原因:Arrayのプロバイダがありません! – Depzor

+1

これは、エラーが発生している場所です。あなたはそれを受け入れることができるように答えるべきですか? ;-p私は 'line 13'とかなり近いと思う。 –

答えて

9

た場合にbindingsまたはprovidersを使用してみてください:このエラーが原因で発生し何らかの理由で :edit-- -

サービス、コンポーネント、またはディレクティブのコンストラクタにパラメータが含まれている場合、Angulars依存性注入はプロバイダを見つけて値を取得しようとしますコンストラクタに渡します。

タイプItem[]のプロバイダが登録されていません。
どちらか

  • あなたはpublic items: Item[]@Optional()を追加プロバイダ
  • を登録し、それはあなたがコンストラクタからパラメータを削除プロバイダ
  • を見つけることができなかった場合そうAngulars DIは、パラメータを無視することを許可されています。
+0

Itemのプロバイダが必要なのはなぜですか?それは単純なモデルクラスです。クラスは一番上にインポートされます。しかし、それはまだ配列に不満が...私はコンストラクタからパラメータを削除したとき。これは失敗します:public items:Item [] = []; – Depzor

+0

前述のように、Angulars DIはインスタンスを作成するときに、(プロバイダからの)値を見つけることを試みると、コンストラクタのパラメータに渡すことができます。 –

+0

ありがとう – Depzor

0

はあなたのコード

例えば

@Component({ 
    selector: 'test-app', 
    bindings: [ServiceName] 
}) 
1

だけで問題を再現することを可能にするコードを追加してくださいコンストラクタの外に配列を初期化し、今あなたが

export class Animal{  

    public animals: Animal[]; //initializing outside of constructor 

    constructor(private animal: Animal) { 

     this.animals = new Array<Animal>(); //creating inside of constructor 

     animals.push(animal); //adding element to the array 
    }   
} 
関連する問題