2016-09-02 3 views
4

방금 ​​각도가 RC6에서 시작되었습니다. 내 @ NgModule 데코레이터 내에서 HttpModule을 가져오고 있습니다.배열에 대한 제공자가 없습니다

그러나이 예외가 발생합니다. Array 공급자가 없습니다!

어떻게 해결할 수 있습니까?

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

이 문제를 재현 할 수 있도록 코드를 추가하십시오 OK입니다 생성자의 외부 배열을 초기화하고 생성자에서 그것을 만들 수 있습니다. 오류 메시지에 따르면 어딘가에 배열을 삽입하려고 시도하고 일치하는 공급자가 등록되어 있지 않습니다. 나는 그것이 7 번째 파일 줄 13에 있다고 생각한다 ;-) –

+0

오류 : 캐치되지 않음 (약속 있음) : 오류 : app/home/home.html의 오류 : 9 : 4에 의한 오류 : 배열 공급자 없음! – Depzor

+1

그게 바로 오류가있는 곳입니다. 당신이 그것을 받아 들일 수 있도록 대답해야합니까? ;-) 나는'line 13'과 아주 가깝다고 생각합니다. –

답변

9

만약에 bindings 또는 providers를 사용해보십시오 :이 오류가 발생합니다 몇 가지 이유를 들어 : edit-- -

서비스, ​​구성 요소 또는 지시문의 생성자가 매개 변수를 포함하는 경우 Angulars 종속성 삽입은 값을 가져올 공급자를 찾기 위해 시도합니다. 그 다음 생성자로 전달됩니다.

Item[] 유형으로 등록 된 공급자가 없습니다.
어느

  • 그렇게 Angulars DI 그것이 제공
  • 생성자에서 매개 변수를 제거를 찾을 수없는 경우 매개 변수를 무시하도록 허용 @Optional()public items: Item[] 전에 추가 공급자
  • 를 등록합니다.
+0

왜 항목에 대한 공급자가 필요합니까? 그것은 단순한 모델 클래스입니다. 클래스는 맨 위에서 가져옵니다. 하지만 여전히 배열에 대해 불평하고있다 ... 심지어 내가 생성자에서 매개 변수를 제거했습니다. 실패 : 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 
    }   
} 
관련 문제