Если я не неправильно понял ваше требование, то вы должны получить элементы массива кусками «5» с интервалом в 10 секунд.Я достиг этого с помощью этого подхода, посмотрите:
export class AppComponent {
arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]
startNewTimer = new Subject();
maxImagestoDisplay: number = 5;
slideInterval: number = 10000;
sub: Subscription
ngOnInit() {
let maxCycle = Math.trunc(this.arr.length / this.maxImagestoDisplay);
this.sub = this.startNewTimer.pipe(switchMap( (startVal: number) =>
timer(startVal, this.slideInterval)
),tap(data => {
if (data >= maxCycle) {
this.startNewTimer.next(this.slideInterval)
}
})).subscribe(timerIndex => {
console.log(this.arr.slice(timerIndex * this.maxImagestoDisplay, (timerIndex + 1 ) * this.maxImagestoDisplay));
})
this.startNewTimer.next(0)
}
}
В этом коде работает таймер, который сбрасывает (уничтожает и создает новый) сам после того, как все элементы были созданы.Посмотрите, можете ли вы соответствовать требованиям, см. Пример здесь:
https://stackblitz.com/edit/angular-oo3xas?file=src%2Fapp%2Fapp.component.ts