В моем проекте 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-й раз, и функция Сам по себе будет работать как положено. На сборке нг я не могу заставить его работать, хотя. Кто-нибудь еще сталкивался с этой проблемой?