Я показываю видео на YouTube с помощью асинхронного канала в Angular 6. Он отлично работает при первой загрузке.
Вот как я его использую.
HTML-файл компонента:
<div id="youtube" class="search-results" *ngIf="(trendingVideos | async) as videos; else loadingOrError"></div>
Файл компонента TS:
public trendingVideos: Observable<VideoClass[]>;
private loadVideos(videosPerPage?: number, regionCode?: string, videoCategoryId?: number) {
this.trendingVideos = this.youtubeService.getTrendingVideos(videosPerPage, regionCode, videoCategoryId, false)
.pipe(
catchError((error: any) => {
this.loadingError$.next(true);
return throwError(error);
})
);
}
Ошибка ловли также работает нормально.
Сервисный файл:
public getTrendingVideos(videosPerPage?: number, regionCode?: string, videoCategoryId?: number, paginationMode?: boolean): Observable<VideoClass[]> {
const params: any = {
part: appConfig.partsToLoad,
chart: appConfig.chart,
videoCategoryId: videoCategoryId ? videoCategoryId : appConfig.defaultCategoryId,
regionCode: regionCode ? regionCode : appConfig.defaultRegion,
maxResults: videosPerPage ? videosPerPage : appConfig.maxVideosToLoad,
key: appConfig.youtubeApiKey
};
return this.http.get<any>(appConfig.getYoutubeEndPoint('videos'), { params })
.pipe(
map(
(data) => {
return data.items
.map((item) => new VideoClass(item))
.filter((item) => item.id !== '');
}
),
catchError(this.handleError('getTrendingVideos'))
) as Observable<VideoClass[]>;
}
Работает нормально, когда я загружаю данные в первый раз. Сейчас я разрабатываю бесконечный свиток. Поэтому я снова вызываю этот API. Но хотите объединить данные в ранее загруженные данные.
Он заменяет данные каждый раз новыми данными, когда мой плагин бесконечной прокрутки вызывает это.
Это бесконечная функция прокрутки:
private onScroll(){
let videosData:Observable<VideoClass[]> = this.youtubeService.getTrendingVideos(this.videoCount, this.regionCode, this.categoryID, true)
.pipe(
catchError((error: any) => {
this.loadingError$.next(true);
return throwError(error);
})
);
// Here how i merge this same video data to previously loaded trending videos data.
}
Любая помощь?