Использование rxjs таймер Наблюдаемые и некоторые операторы будут чистым решением.
Вы можете создать две наблюдаемые (должна быть реализована функция secondsToStringDate
, пример ):
// Fires every second for 5 minutes then completes
sessionExpiration$ = timer(1000).pipe(take(60 * 5));
// Every second, generate a displayable string mm:ss
sessionRemainingTime$ = sessionExpiration$
.pipe(map(seconds => secondsToStringDate(seconds)));
Теперь, когда вы создали свои Observables, вы можете использовать их:
Чтобы запустить желаемое поведение по истечении времени:
sessionExpiration$.pipe(finalize(() => {
// Fired when the sessionExpiration$ observable completes
// You can put what you want to do when session expires
}).subscribe();
Добавитьгде вы хотите отобразить время в своем шаблоне:
<!-- Will display the time in the template -->
{{sessionRemainingTime$ | async}}
Для безопасного решения вы должны добавить внутреннее решение, а не полагаться только на JavaScript.