Вы можете изменить код, чтобы сделать HTTP-запрос внутри метода onActivate(event)
. Попробуйте следующее
import { Component, OnInit, OnDestroy } from '@angular/core';
import { Subject, Observable, Subscription } from 'rxjs';
export class AppComponent implements OnInit, OnDestroy {
node: any;
subscription: Subscription;
ngOnInit() {
// don't trigger the HTTP call here
}
loadData(): Observable<boolean> {
const result = new Subject<boolean>();
this.service.getData().subscribe(
res => {
this.node = res;
result.next(true);
},
error => {
// handle error
result.next(false);
}
);
return result;
}
onActivate(event) {
// wait node get data then continue this function
this.subscription = this.loadData().subscribe(
status => {
if (status) {
// proceed further
}
}
);
}
ngOnDestroy() {
if (this.subscription) {
this.subscription.unsubscribe();
}
}
}