我有一个带组件的简单库,我需要对HTML字符串使用DomSanitizer。我正在我的Application项目中使用这个库。
我已经知道我应该导入Domsanitizer并将其注入到构造函数中,正如许多人已经解释过的:Correct way Provide DomSanitizer to Component with Angular 2 RC6
编辑:
您也可以在此处查看:
LibraryComponent.ts
import {DomSanitizer, SafeHtml} from '@angular/platform-browser';
export class SqvLibComponent implements OnInit {
constructor( private sanitizer: DomSanitizer ) {
}
sequenceRegion: SafeHtml;
this.sequenceRegion = this.sanitizer.bypassSecurityTrustHtml(myStringtoSanitize);
}
但是我收到一条错误消息:
“没有Domsanitizer的提供者!”
有人知道为什么吗? 谢谢!
答案 0 :(得分:0)
如链接问题中的this answer中所述,您需要确保导入BrowserModule
,否则DomSanitizer
不会be provided。
重要的一点是BrowserModule
应该由应用程序根模块而不是库模块导入。
在大多数情况下,BrowserModule
可以正确导入,因为cli创建的应用默认情况下会这样做。但是对于不是这样的情况,您可以在代码中添加以下检查:
import {Optional}from '@angular/core';
export class SqvLibComponent implements OnInit {
sequenceRegion: SafeHtml;
constructor(@Optional() private sanitizer: DomSanitizer ) {
if(!!this.sanitizer){
this.sequenceRegion = this.sanitizer.bypassSecurityTrustHtml(myStringtoSanitize);
}else{
// Depending on your component´s ability to correctly work
// without this dependency you can either warn or raise an error
console.warn("Ensure that the `BrowserModule` is imported in the application´s root module");
}
}
}