Я импортирую HTML-фрагмент от третьей стороны и внедряю его в какой-то заполнитель вне моего приложения Angular 7.Есть одна ссылка, начинающаяся с javascript:
внутри фрагмента, к которой будет добавляться unsafe:
от Angular, что нарушает его функциональность.
DOMSanitizer Angular только кажется, что способ обойтибезопасность для строк HTML.Однако в приведенном ниже методе я просто читаю узел DOM и добавляю его в другое место назначения.Поэтому мне нужно иметь решение для узла DOM.
Согласно моим исследованиям, вставленные узлы в порядке сразу после вызова appendChild
, но через несколько мс после этого Angular добавляет unsafe:
.
Как я могу обойти защиту для узлов DOM?
private insertPart(componentImportLinkId: string, targetSelector: string): void {
try {
const linkElement: any = document.getElementById(componentImportLinkId);
const componentContent = linkElement.import;
const componentTemplate = componentContent.querySelector('template');
const importedComponentTemplateClone = document.importNode(componentTemplate.content, true);
const appendToElement = document.querySelector(targetSelector);
appendToElement.appendChild(importedComponentTemplateClone);
} catch (e) {
console.error(`PortalLayoutComponent.insertPart: Can not insert '${targetSelector}'`, e);
}
}