2017-02-04 4 views
0

子コンポーネントに配信されるデータのチャンクは@Inputでconsole.logsですが、アクセスしようとしているオブジェクトがタイプFirebaseObjectObservable<any>に存在しないというエラーをスローします。ここで"FirebaseObjectObservableの型にプロパティ '...'が存在しません" @Inputで受信したデータを扱うときにエラーが発生しました

は、データのチャンクが他の親コンポーネントで使用されます、それはこの

@Input('busImageQuesI') 
questions: FirebaseObjectObservable<any>; // console.logs the questions showing they made it safely to the component. 

この子コンポーネントとして提供されていた子コンポーネント内

"questions" : { 
     "question01" : { 
      "id"  : "an ID", 
      "name"  : "a name", 
      "question" : "a question", 
      "answers" : { 
       "answer01" : { 
        "answer" : "some answer", 
        "id"  : "an ID" 
       }, 
       "answer02" : { 
        "answer" : "another answer", 
        "id"  : "an ID" 
       } 
      } 
     }, 
     "question02" : {....}, 
     "question03" : {....} 
    } 

構成されている方法です、それは自分の子供のいますどの親コンポーネントが呼び出されているかに応じて、どのコンポーネントが表示されるかを決定するために、if文を使用すると考えました。これまでのところ、それは私が私が親コンポーネントに基づいて欲しい質問を送信するためにこれをやっているこの

<multiple-choice-radio *ngIf="expbTrigger"></multiple-choice-radio> 
<multiple-choice-radio *ngIf="rebbTrigger"></multiple-choice-radio> 
<multiple-choice-radio *ngIf="newbTrigger"></multiple-choice-radio> 

のようにテンプレート内の他の要素をトグルすることを使用しています。この

expbTrigger: boolean = false; 
rebbTrigger: boolean = false; 
newbTrigger: boolean = false; 

ngOnInit() { 

    var myLocation = window.location.pathname; 


    if (myLocation.includes('expand')){ 
     this.expbTrigger = true; 

    } else if (myLocation.includes('recreate')){ 
     this.rebbTrigger = true; 

    } else if (myLocation.includes('new-business')){ 
     this.newbTrigger = true; 
    } 

    console.log(this.expbTrigger, this.rebbTrigger, this.newbTrigger); 
} 

のように見えますそれらのどれもが1つの部分だけに限定されているわけではないので、すべてで使用されているわけではないので、手動で設定し、*ngIfを使用して必要に応じてオンとオフを切り替えます。

questions@Inputで受信したオブジェクトには3つの質問があります。 expbTrigger = true場合、私は、私は、このコードは

questionA: FirebaseObjectObservable<any>; 
questionB: FirebaseObjectObservable<any>; 

ngOnChanges(){ 
    if(this.expbTrigger = true){ 
     this.questionA = this.questions.question01; 
     this.questionB = this.questions.question02; 
    } else if(this.rebbTrigger = true){ 
     this.questionA = this.questions.question03; 
     this.questionB = null; 
    } 
} 

を働くだろう考え出し、私は質問3を使用したいrebbTrigger = true場合は質問1と2を使用したいが、私はこのエラー

Property 'question01' does not exist on type 'FirebaseObjectObservable<any>' 

を取得し、それは同じことを言います質問2と3のために。私がコードをコメントアウトしてconsole.log(questions)を実行すると、それがログに記録され、その中のすべての質問が表示されます。私はそれをngAfterViewInitに移そうとしましたが、同じエラーが発生しました。私が見ているすべての例は、1つの単層のデータであるため、入れ子になったデータの本体を検索することに関して、私が間違っていることを伝えるのは難しいです。誰も助けることができますか?

答えて

0

データを保持するためにオブザーバブルの代わりにオブジェクトを使用する方がよいと思います。しかし、その場合でも、受信しようとしているデータと一致するようにインターフェイスを事前に定義する必要があるため、エラーが発生します。あなたはそれを持っていない場合、このようなプロパティにアクセスすることができます:this.questions['question01'];

関連する問題