我通过该 console.logs 将一大块数据传递给子组件@Input
,但是当我开始处理数据时,它会抛出一个错误,指出我试图访问的对象在 type 上不存在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
使用在适当的时候打开和关闭它们。
questions
收到的对象中@Input
有 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
,并得到了同样的错误。我看到的每个示例几乎都是单层数据,因此很难判断我在检索嵌套数据体方面做错了什么。任何人都可以帮忙吗?