Я пытаюсь сделать кнопку с индикатором выполнения и текстом под кнопкой, которая покажет, сколько осталось времени. Я использую индикатор прогресса ioni c, который принимает значение в диапазоне [0 ... 1].
public timeToClose = 5 * 1000;
...
const interval = this.timeToClose / 100;
timer(0, interval).pipe(
tap((v) => this.progress = v / 100),
map(i => this.timeToClose - i * interval),
take(100),
tap((timeLeft) => this.timeLeft = Math.floor(timeLeft / 1000) + 1),
finalize(() => this.closeModal()),
).subscribe();
Но это выглядит ужасно. Как я могу сделать это лучше код?