Поскольку данные передаются в дочерний компонент асинхронно, вы можете использовать подписку
В some.service.ts
private _railcarData = new Subject<RailcarModel[]>();
_railcarData$ = this._railcarData.asObservable();
setRailCarData(data: RailcarModel[]) {
this._railcarData.next(data);
}
// Async HTTP Call
fetchRailData(): Observable<any> {
return this.http
.get<any>('/api/someurl')
.pipe(
tap((data: any) => { // You can set data here or in parentcomponent.ts
this.setRailCarData(data); // Assigns value to subject
})
);
}
В childcomponent.ts
файл
railDataSubscription: Subscription;
constructor(private someHttpService: SomeService) {
this.railDataSubscription = this.someHttpService._railcarData$.subscribe(
raildata => {
this.railcarData(raildata); // your set method
}
);
}
ngOnDestroy() {
this.railDataSubscription.unsubscribe();
}
В parentcomponent.ts
file // Необязательно, поскольку данные назначаются в самом вызове http
constructor(private someHttpService: SomeService) {}
// This line in async subscription
this.someHttpService.setRailCarData(railddata);