2017-04-18 70 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'函數,我不能通過字符串方式傳遞對象可以嗎? –