Убить angular в chrome - PullRequest
       13

Убить angular в chrome

0 голосов
/ 28 апреля 2020

У меня есть сотрудники, которые постоянно ломают вещи, открывая мое приложение на двух вкладках. Я хочу убить вкладку, если они открывают новую вкладку. Это возможно? window.close() не будет работать, потому что моя вкладка не открылась сама. Я думал о том, чтобы написать бомбу, но это может сделать что-то еще. Я использую Angular, поэтому я подумал, что должна быть какая-то функция, которую я могу вызвать, например, функция app.destory?

У кого-нибудь есть идеи получше?

Мое приложение работает ТОЛЬКО на Chrome, и оно никогда не изменится, поэтому решение chrome Speci c мне подойдет.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

Я обнаружил, что в angular есть функция уничтожения: platformBrowserDynamic().destroy()

Просто вызовите эту функцию, и она полностью разгрузится angular. Все CSS перестанут работать, а ваш HTML зависнет. Это не плохой вариант. Я просто замораживаю все с хорошим сообщением о закрытии окна.

0 голосов
/ 29 апреля 2020

Таким способом вы можете получить доступ к объекту окна в Angular. Во-первых, мы должны создать сервис. Поскольку наше приложение Angular предназначено не только для работы в вашем браузере, но и на мобильных платформах, сервер или веб-работники, на которых такие объекты, как окно, могут быть недоступны.

Поэтому предлагаемый подход состоит в том, чтобы обернуть такие объекты и внедрить их через механизм внедрения зависимостей.

import { Injectable } from '@angular/core';

function _window() : any {
   // return the global native browser window object
   return window;
}

@Injectable({
  providedIn: root
})
export class WindowRef {
   get nativeWindow() : any {
      return _window();
   }
}

И мы можем просто вызвать это в нашем компоненте так:

import { WindowRef } from './WindowRef';

@Component({...})
class MyComponent {

    constructor(private winRef: WindowRef) {
        // getting the native window obj
        console.log('Native window obj', winRef.nativeWindow);
    }

}

Теперь создайте функцию, которая обрабатывает действие newtab

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