Расширяя реквизиты HTMLElement, получение свойства 'pseudoStyle' не существует для типа 'HTMLElement' - PullRequest
0 голосов
/ 11 марта 2020

В моем проекте Angular 9 я пытаюсь расширить доступные функции HTMLElement, добавив новое свойство с именем "pseudoStyle", которое позволяет добавлять новые стили в :: after и :: before, например:

element.nativeElement.pseudoStyle('after', 'height', '100%');

После обновления с Angular 8 до Angular 9 я получаю следующие ошибки при "ng serve" и "ng build"

Property 'pseudoStyle' does not exist on type 'HTMLElement'.
     HTMLElement.prototype.pseudoStyle = function(element, prop, value) {

Это происходит в следующем коде, который называется внутри основного глобального компонента приложения в ngOnInit ()

  // used so we are able to edit :before and :after tags dynamically from the code
  // extension of the HTMLDom base functionalities
  extendThePseudoElementFunctionality() {
    const UID = {
      _current: 0,
      getNew: function() {
        this._current++;
        return this._current;
      }
    };

    HTMLElement.prototype.pseudoStyle = function(element, prop, value) {
      const _this = this;
      const _sheetId = 'pseudoStyles';
      const _head = document.head || document.getElementsByTagName('head')[0];
      const _sheet = document.getElementById(_sheetId) || document.createElement('style');
      _sheet.id = _sheetId;
      const className = 'pseudoStyle' + UID.getNew();

      _this.className += ' ' + className;

      _sheet.innerHTML += '\n.' + className + ':' + element + '{' + prop + ':' + value + '}';
      _head.appendChild(_sheet);
      return this;
    };
  }

Как я пытаюсь это сделать, вызывая приведенный выше код, как описано выше, и используя файл с именем htmlElement.d.ts, который содержит следующий код:

declare interface HTMLElement {
  pseudoStyle(element, prop, value);
}

и его импортированный в tsconfig. json примерно так:

"typeRoots": ["node_modules/@types", "src/custom_typings/htmlElement.d.ts"],

Перед обновлением до Angular 9 с помощью ng update эта ошибка не возникла Триггер, а также, по крайней мере, для ng serve, он запускается сразу после его запуска, но если я позволю, скажем, перекомпилировать проект, сохранив случайный файл, ng serve успешно скомпилируется во 2-й раз, и функция Сам по себе будет работать как положено. На сборке нг я не могу заставить его работать, хотя. Кто-нибудь еще сталкивался с этой проблемой?

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