Использование собственного DomSanitizer с Ivy - PullRequest
0 голосов
/ 11 апреля 2020

Я использую 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

...