Angular 2 禁用消毒 [英] Angular 2 disable sanitize
问题描述
我正在尝试将 base64 字符串呈现为 <img src='data:image/png;base64,${Here}'
.
I am trying to render base64 string into <img src='data:image/png;base64,${Here}'
.
但总是当我尝试渲染它时,ng2 在渲染它之前清理我的 base64 字符串,在将它显示在 DOM 中之前将它添加到我的值中.我找到了解决方法(使用 DomSanitizer),但它不适用于最新版本.
But always when I try to render it, ng2 sanitizing my base64 string before rendering it adds something into my value before showing it in DOM. I have found workaround(using DomSanitizer) but it doesn't work on latest versions.
这是我的标记:
<img alt="RegularImage" src="data:image/png;base64,{{imgBase64}}">
这是我的组成部分:
imgBase64="SomeBase64StringFetchedSomehow";
但是 angular2 显示在控制台下一条消息 - 警告:清理不安全的 URL 值
But angular2 is showing in console next message - WARNING: sanitizing unsafe URL value
如何防止 NG2 清理我的 base64 字符串?
How to prevent NG2 from sanitizing my base64 string?
更新
get getImg() {
return this._sanitizer.sanitize(SecurityContext.URL,`data:image/png;base64,${this.img}`);
}
不能解决这个问题.DomSanitizer 类在 RC6 中不再存在
Doesn't solve this issue. DomSanitizer class does not exists anymore in RC6
推荐答案
经过几个小时的研究,我终于发现在最新版本的 ng2 中没有可以使用 DI 注入的 DomSanitizer
,但是有 Sanitizer
.所以这里是用法:
After few hours of researches I have finally found that in latest version of ng2 there is no DomSanitizer
that can be injected using DI, however there is Sanitizer
. So here is the usage:
constructor( private _sanitizer: Sanitizer){
}
get getImg() {
return this._sanitizer.sanitize(SecurityContext.URL, `data:image/png;base64,${this.img}`);
}
<input src="{{getImg}}"/>
如您所见,sanitize
方法的第一个参数是 SecurityContext
实例,它基本上是枚举.所以现在 Sanitizer
是一个工厂,它根据 SecurityContext
As you can see first argument of sanitize
method is SecurityContext
instance, which basically is enum. So right now Sanitizer
is a factory which choose the implementation to use based on SecurityContext
就我而言,我遇到了一个问题,我的 base64 在此之前就已经过消毒,这就是为什么我无法让它工作的原因.
In my case I had a problem that my base64 was sanitized before that get, that why I was not able to get it working.
这篇关于Angular 2 禁用消毒的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!