2017-04-18 55 views
1

时剥去点击功能我必须使用模板上的[innerHTML]标记通过打字输入一些html。Angular 2 - 在使用[innerHTML]

我试图把在HTML点击功能:

status = "<img src='assets/hello.png' (click)='hello()' />"; 

但点击功能被剥夺了与控制台说:

WARNING: sanitizing HTML stripped some content (see http://g.co/ng/security#xss). 

我看到几个人已经开始使用提到“DomSanitizer”,但找不到解决我确切问题的例子。

回答

5

角度剥离所有内容角度特定如果您使用的是[innerHTML]

如果你需要类似的东西,你可以在运行时创建组件,如在Equivalent of $compile in Angular 2
解释或者你可以使用命令性代码添加事件处理程序像

constructor(private elRef:ElementRef, private cdRef:ChangeDetectorRef) {} 

someMethod() { 
    this.status = "<img src='assets/hello.png' (click)='hello()' />"; 
    this.cdRef.detectChanges(); 
    this.elRef.nativeElement.querySelector('img').addEventListener('click', this.hello.bind(this); 
} 
+0

谢谢您的回答。我收到错误“Property'querySelector'在类型'ElementRef'上不存在。 –

+0

对不起,我错过了'nativeElement.' –

+0

谢谢。但是如果我要传递一个对象给我'hello'函数,我不能通过字符串方式传递对象可以吗? –