Как я могу объявить глобальную функцию для вызова службы Angular из консоли браузера? - PullRequest
0 голосов
/ 27 февраля 2020

У нас есть требование, чтобы мы хотели разработать "мини" среду тестирования для использования в нашем приложении Angular. Суть платформы заключается в том, чтобы иметь возможность манипулировать вызовами API для изменения тела ответа и кода состояния, чтобы отключить различные обработчики ошибок в нашем приложении и убедиться, что приложение правильно реагирует на вызовы API с ошибками.

Для этого я изучал, как звонить в Angular службы извне Angular. В этой статье описывается, как можно создать службу, а затем запустить ее извне Angular, вызвав функцию window.fireAngularEvent('sampleEventName', args).

Однако, когда я пытался сделать это через браузер, я получаю следующее: Uncaught TypeError: window.fireAngularEvent is not a function

Вот мой Angular сервис

export class GlobalApiTestingFrameworkService {

  constructor() {
    window['fireAngularEvent'] = (eventName, args) => {
      console.log('fireAngularEvent : ' + eventName + ' : ' + args);
    }
  }
}

Что мне делать нужно сделать, чтобы иметь возможность вызывать функцию window.fireAngularEvent? Нужно ли определять его вне Angular в его собственном файле JS? Если да, что именно я включаю в тело функции, чтобы оно могло взаимодействовать со службой? Статья, на которую я ссылаюсь, не очень ясна.

1 Ответ

2 голосов
/ 27 февраля 2020

Проблема связана с тем, что пробел в window['fireAngularEvent '] заменил определение на window['fireAngularEvent'], и вы сможете без проблем вызвать window.fireAngularEvent.

Убедитесь, что что ваш сервис создается хотя бы один раз.

Чтобы быть уверенным, вы можете, например, использовать свой сервис в AppComponent следующим образом:

export class AppComponent  {
    constructor(private globalApiTestingFrameworkService: GlobalApiTestingFrameworkService){
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...