Я собрал демо StackBlitz , чтобы показать, как это работает.Через 10 секунд он автоматически отобразит модальное состояние.
В ваш код необходимо внести несколько изменений, чтобы заставить его работать:
i.Убедитесь, что вы можете получить ссылку на модальный шаблон в своем файле TS, используя следующий код для объявления шаблона в качестве переменной класса и используя @ViewChild
для получения ссылки на него в HTML:
@ViewChild('renew')
private renew: TemplateRef<any>;
Я изменил логику для упрощения демонстрации - в этом примере AuthService
запускает время каждые 5 секунд.Компонент слушает это, и если метка времени, испускаемая AuthService
, превышает 10 секунд после создания компонента, он отображает модальное значение.
ii.Вам нужно будет назначить подписку переменной subscription
, чтобы затем можно было отменить подписку при открытии модального окна:
// 1. Maintain a reference to the subscription
const subscription: Subscription = this._auth.time.subscribe((now: Date) => {
...
if (/*should renew*/) {
this.openRenew(this.renew);
subscription.unsubscribe(); // 2. Unsubscribe here after opening modal
}
});
. Это предотвращает отображение дополнительных модов поверх оригинального каждый раз, когда AuthService
испускает метку времени.