ngif
будет работать, так как ngOnInit
запускается до загрузки шаблона, я все равно буду использовать ngOnInit
, вместо этого я подожду, пока оба запроса что-то испустят, сохранит значения в области видимости в одном Observable и будет использовать async
pipe обрабатывает подписку, как таковую:
details$: Observable<any>;
ngOnInit() {
this.details = combineLatest([
this.http.get<any>(URL1),
this.http.get<any>(URL2)
]);
}
Затем в шаблоне:
<div *ngIf="details$ | async as details">
// do something with -details- as the values are stored in it
</div>
ОбъединитьЛатест возвращает наблюдаемое, содержащее массив, который содержит значения ваших запросов get, значения хранятся в том же порядке [valuesURL1, valuesURL2]
.
В конечном итоге я бы предложил переместить все запросы http в их собственную службу, а затем внедрить службу в конструкторе компонентов. В настоящее время ваш компонент обрабатывает больше ответственности, чем он должен сейчас.