Итак, проблема в этой функции:
navigateForms() {
this.formService.getForms();
this.navigateService.navigate('forms');
}
Вы позвонили this.formService.getForms();
, что инициализирует forms$
на FormService
.Но одновременно вы также переходите к forms
, который будет отображать ListFormsComponent
.В вашем ListFormsComponent
вы делаете formService.forms$
, который мог бы не инициализироваться в этот момент.Следовательно, вы получаете это как undefined
.
Вместо использования forms$
, я бы просто возвратил значение Observable
из метода getForms
, и я бы вызвал его в ListFormComponent
'ngOnInit
метод:
export class FormService {
public forms$: Observable <Array<Form>> ;
public assignedForms$: Observable <Array<Form>> ;
public form$: Observable <Form>;
constructor(
private afs: AngularFirestore,
private authService: AuthService,
) {}
getForms() {
return zip(this.authService.user$).pipe(
flatMap(data => {
return this.afs.collection('networks')
.doc(data[0].activeNetworkProfile.id)
.collection('companyProfiles')
.doc(data[0].activeCompanyProfile.id)
.collection<Forms>('inspectionForms')
.valueChanges();
})
);
}
}
Затем в ListFormsComponent:
export class ListFormsComponent implements OnInit {
public forms: Forms[];
constructor(
private formService: FormService,
private navigateService: NavigationService
) { }
ngOnInit() {
this.formService.getForms().subscribe(forms => {
this.forms = forms;
console.log("Forms inside component");
console.log(this.forms);
});
}
}
Кроме того, мне не нужно сейчас вызывать getForms
с navigateForms
.Чтобы я мог избавиться от этого:
navigateForms() {
this.navigateService.navigate('forms');
}