У меня была такая же проблема в моем проекте.Версия: "7.1.0".
Так что мое решение для этого - создать некоторую логическую переменную для загрузки большего количества элементов.Когда вы загружаете некоторые данные из API, установите для него значение true, после этого - false.
Пример использования этого в вашей функции.
onReachEnd(): void {
if (this.isLoadingData) {
return;
}
// Call the API/function for more items here
}
Поскольку я не знаю, если выесть какой-то сервис для обработки запросов и т. д. Я покажу вам некоторый пример с использованием BehaviorSubject.
Допустим, что ваш сервис называется dataService
.Мы можем создать здесь BehaviorSubject
- isLoadingData.
private isLoadingDataBehaviorSubject BehaviorSubject<boolean> = new BehaviorSubject(false);
и, поскольку это сервис, мы можем создать здесь public
observable: isLoadingData
= this.isLoadingDataBehaviorSubject.asObservable ();`
Теперь, когда мы получили все это, мы можем создать функцию для вызова API внутри этого сервиса:
loadData(): Observable<any> {
this.isLoadingDataBehaviorSubject.next(true);
return this.http.get(url).pipe(
tap((response) => {
this.isLoadingDataBehaviorSubject.next(false);
return response;
}),
catchError((error: HttpErrorResponse) => {
this.isLoadingDataBehaviorSubject.next(false);
return of({});
})
);
}
И вы также должны подписаться на эту isLoadingData внутри вашего компонента и установить его значение,Самый простой способ, например:
ngOnInit(): {
this.dataService.isLoadingData.subscribe(x => {
this.isLoadingData = x;
});
}