У меня есть кусок данных, доставляемых дочернему компоненту через @Input
, что console.logs, но когда я иду для работы с данными он выдает ошибку, говоря, что объекты, к которым я пытаюсь получить доступ, не существуют по типу FirebaseObjectObservable<any>
.«Свойство« ... »не существует по типу FirebaseObjectObservable <any>« Ошибка при работе с данными, полученными с помощью @Input
Вот как фрагмент данных структурирована
"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
, а также получил ту же ошибку. Каждый пример, который я вижу, - это всего лишь один единичный уровень данных, поэтому трудно сказать, что я делаю неправильно в отношении поиска вложенных тел данных. Может ли кто-нибудь помочь?