Обычно вы настраиваете фактический серверный вызов в службе (называемой моделью, потому что она моделирует ваши данные).Вот один из моих примеров.
service.ts
@Injectable()
export class ApiService {
constructor(private http: HttpClient) { }
public get<T>(path: string, routerParams?: Params): Observable<T> {
let queryParams: Params = {};
if (routerParams) {
queryParams = this.setParameter(routerParams);
}
return this.http.get<T>(this.path(path), { params: queryParams });
}
public put<T>(path: string, body: Object = {}): Observable<any> {
return this.http.put(this.path(path), body);
}
public post<T>(path: string, body: Object = {}): Observable<any> {
return this.http.post(this.path(path), body);
}
public delete<T>(path: string): Observable<any> {
return this.http.delete(this.path(path));
}
...
В моих компонентах (иногда других службах) я буду вызывать метод API и ожидать результатов в форме Observable,Так что в вашем случае я бы использовал мой сервис следующим образом:
component
constructor(private apiService: ApiService) { }
ngOnInit() {
this.apiService('https://pathtoserver').subscribe(data => {
if (data.id) {
this.setCurrentUser();
}
});
}
Не забывайте НЕ вызывать getData1 ();более одного раза или у вас будет 2 "горячие" подписки.Используйте .pipe(take(1)).sub
... для прекращения подписки, как только они вам что-то дадут.