У меня есть DataServive
, который извлекает контент из API:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { map, catchError, retry } from 'rxjs/operators';
import { environment } from 'src/environments/environment';
@Injectable()
export class DataService {
this.request = {
count: 10
}
constructor(private http: HttpClient) { }
private handleError(error) {
console.log(error);
}
public getData(count): Observable<any> {
this.request.count = count;
return this.http.post<any>(environment.api + '/path', this.request).pipe(
map(response => {
return response;
}),
catchError(error => {
this.handleError(error);
return [];
})
);
}
}
Это DataServie
заполняется таким компонентом:
ngOnInit() {
const subscriber = this.dataService.getData(this.count).subscribe((data) => { this.data = data; });
}
И это работаетотлично.
Однако пользователь может изменить переменную this.count
(сколько элементов должно отображаться) в компоненте.Поэтому я хочу получать новые данные с сервера, как только это значение изменится.
Как мне этого добиться?
Конечно, я мог бы позвонить destroy
наthis.subscriber
и снова позвоните ngOnInit()
, но это не похоже на правильный путь.