使用@Input接收的数据时"Property '...' doesn't exist on type FirebaseObjectObservable<any>"错误



我有一块数据通过console.log的@Input传递到子组件,但当我处理数据时,它会抛出一个错误,说我试图访问的对象在类型FirebaseObjectObservable<any>上不存在。

以下是数据块的结构

"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"    : {....}
}

在子组件内部,它作为交付

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

这个子组件将在其他父组件中使用,它有自己的子组件来填充,这取决于调用它的父组件。到目前为止,我想我会使用if语句来确定显示哪些数据集。到目前为止,它看起来像这个

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);
}

我用它来切换模板中的其他元素,比如这个

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

我这样做是为了根据父组件发送我想要的问题,因为没有一个问题只限于一个部分,但它们并不是全部用于所有内容,所以我想我只需要手动设置它们,并在适当的时候使用*ngIf来打开和关闭它们。

@Input接收到的questions对象中有3个问题。如果expbTrigger = true,我想使用问题1和2。如果rebbTrigger = true,我想使用问题3。我想这个代码可以

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;
}
}

但是我收到这个错误

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

问题2和问题3也是如此。当我注释掉代码并执行console.log(questions)时,它会记录它并显示其中的所有问题。我也尝试将它移到ngAfterViewInit中,但也出现了同样的错误。我看到的每个例子几乎都是一个单层数据,所以很难判断我在检索嵌套数据体方面做错了什么。有人能帮忙吗?

我认为最好使用对象而不是可观察对象来保存数据。但即使在这种情况下,您也会得到一个错误,因为您必须预定义接口以匹配您将要接收的数据。如果你没有,你可以这样访问属性:this.questions['question01'];

相关内容

  • 没有找到相关文章

最新更新