Как вызвать компонент (модальное всплывающее окно) из службы? - PullRequest
0 голосов
/ 29 марта 2019

Я хочу показывать всплывающее окно сеанса за каждые 10 минут.Я помещаю выданное время в хранилище сеанса в служебный файл, а также из того же файла, который запускаю таймер.Я делаю это потому, что в каждом ответе я получаю новое время.Таким образом, я передаю выданное время от хранения сеанса до всплывающего окна.Проблема, которую я здесь получаю, заключается в том, что я не могу вызвать компонент из этой конкретной службы, причина в том, что «Круговая зависимость в службе -> компонент -> служба -> компонент»

Это мой файл службы

@Injectable({
providedIn: 'root'
})


export class HttpBaseService {

 constructor(public authHttp: HttpClient, private modal: MatDialog, 
private toastr: ToastrManager) { }

public handleAPIResponse(response: any) {

    if (response.accessToken) {
        const tokenInfo = 
this.getDecodedAccessToken(response.accessToken);
        const issuedTime = tokenInfo.exp;
        this.setToken(response.accessToken, issuedTime);
//Here I am starting the timer with latest  issued time.
          this.startTimer(issuedTime); 
    }
    return response.result;
 }
}

startTimer(issuedTime: number) {
///login to calculate time 
//call a modal popup here if time is up. 
this.modal.open(ModalPopupComponent, {

 }

 }

Это мой ModalPopupComponent

@Component({
  selector: 'app-modal-popup',
  templateUrl: './modal-popup.component.html',
  styleUrls: ['./modal-popup.component.scss'],
})

export class ModalPopupComponent implements OnInit { 

//logic to show countdown of One min to logout automatically

}

Нужно знать, как я могу вызвать модальный компонент из этого сервиса, без какой-либо циклической зависимости.Заранее спасибо

1 Ответ

0 голосов
/ 29 марта 2019

Вы можете установить таймер в компоненте, который проверяет вашу переменную в сервисе и запустить Модал следующим образом:

setInterval(() => { this.loading = true; this.getSignals(); }, 60000);

Вы можете активировать это в Компоненте ngOninit Удачи!

...