Как закрыть роутер, открытый в новой вкладке при выходе из системы в angular8 - PullRequest
0 голосов
/ 18 февраля 2020

Привет! Я использовал тег привязки для открытия routerLink в новой вкладке. Теперь, если я нажму на выход из системы, routerLink на новой вкладке останется прежним, если есть какое-либо попадание API, то routerLink перенаправит на страницу входа. Но я хочу, чтобы все вкладки закрывались, как только я выйду из системы, так как другие страницы маршрутизатора не имеют заголовка на экране.

Header.component.ts:

public logout() {
    this.authservice.logOutSuccess(true);
    this.router.navigate(["/login"]);
    this.cookieService.delete(TPIConstants.AUTH_TOKEN);
  }

Здесь, в компоненте заголовка, если я нажимаю на кнопку «Выйти», я очищаю повара ie, поэтому экран перенаправляется на страницу входа.

Но на целевой странице я добавляю новую кнопку, когда я нажмите на это, он открывает маршрутизатор в новой вкладке,

Landing. html:

 <a class="btn btn-light" target="_blank" [routerLink]="['/profile']"> Add New</a>

Экран профиля теперь открывается в новой вкладке.

Итак, я использовал общую службу под названием auth.service, в которой я использовал субъект

auth.service.ts:

 public  detectLogOutSubject = new Subject<any>();
  logOutConfirmed$ = this.detectLogOutSubject.asObservable();

 logOutSuccess(value) {
    this.detectLogOutSubject.next(value);
  }

, поэтому, когда я нажимаю на выход из системы, он приходит к authservice и запускает это событие, и на странице профиля я написал так в методе конструктора

profile.component.ts: и app.component.ts

constructor(){
    this.subscription = this.authService.logOutConfirmed$.subscribe(
      res => {
        alert(res)
    });
   }

Профиль. html:

<div>
                <button class="btn btn-secondary" onclick="window.close();" title="Close Window">
                    <i class="fas fa-times fa-1x"></i>
                </button>
            </div>

В профиле html, у меня есть раздел выше div, если это нажмите три Кроме того, он закроет вкладку, но я не могу получить событие из функции выхода из системы на экран профиля / app.component также, я поражен, нет, где получить, как действовать

1 Ответ

1 голос
/ 18 февраля 2020

Поскольку вы не используете window.open () для открытия новой вкладки, у вашего Javascript не будет разрешения на закрытие вкладки. Если закрытие вкладки важно, то вам нужно использовать window.open (), чтобы открыть вкладку, и затем вы можете использовать window.close (), чтобы закрыть ее, когда вы будете готовы.

Подробнее о безопасности и разрешения могут быть найдены здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...