Я использую ng-dompurify в приложении Angular 9 и заменил DomSanitizer по умолчанию Angular на реализацию NgDompurifyDomSanitizer.
@NgModule({
// ...
providers: [
{
provide: DomSanitizer,
useClass: NgDompurifyDomSanitizer,
},
],
// ...
})
Таким образом, при выполнении таких операций, как
<div [innerHTML]="someHtmlString"></div>
DomPurify будет использоваться для очистки этой HTML строки.
Это прекрасно работает, когда я Я не использую Ivy, но когда я использую Ivy, обработанный HTML очищается чем-то отличным от NgDompurifyDomSanitizer. Я не уверен, что sanitizer используется в этом случае, но я вижу, что атрибуты стиля удаляются из элементов html, что не произойдет, если используется NgDompurifyDomSanitizer.
Я собрал Пример stackblitz, показывающий проблему здесь: https://stackblitz.com/edit/angular-domsanitizer-ivy. Если вы введете go в настройки стекаблица и снимите флажок «Включить плющ», вы увидите, что текст отображается красным, но при его выборе встроенный стиль удаляется, а текст становится черным.
Я не уверен, есть ли что-то особенное, что мне нужно сделать, чтобы сделать эту работу с Ivy, или это не поддерживается с Ivy. Я гуглил большую часть дня, пытаясь понять это, но мне не повезло.
Я был бы признателен за любые идеи, которые кто-то может иметь.
РЕДАКТИРОВАТЬ: Для тех, интересно, это действительно ошибка, и я открыл тикет: https://github.com/angular/angular/issues/36794