2017-03-20 35 views
0

私はtypescriptでAngular2を使用しています。DomSanitizerを使用しているときにAngular2が機能しなくなる(クリックする)

私は、HTMLのレンダリングに関して機能するパイプを持っています。 問題はDomSanitizer(クリック)イベントが機能しなくなっているようです。

console.log(F12)のHTMLをチェックすると、(クリック)コードがそこにあるように見えて、外されていないようです。

しかし、リンクをクリックしても何もしません。

これは(それは私のコンポーネントに機能を呼び出す)リンクの例である:

<a (click)="recordLinkClick()" target="_blank" href="#">Test link</a> 

これはパイプである:

import { Pipe } from '@angular/core'; 
import { DomSanitizer, SafeHtml, SafeStyle, SafeScript, SafeUrl, SafeResourceUrl } from '@angular/platform-browser'; 

@Pipe({ 
    name: 'safe' 
}) 
export class SafePipe { 

    constructor(protected _sanitizer: DomSanitizer) { 

    } 

    public transform(value: string, type: string = 'html'): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl { 
    switch (type) { 
     case 'html': return this._sanitizer.bypassSecurityTrustHtml(value); 
     case 'style': return this._sanitizer.bypassSecurityTrustStyle(value); 
     case 'script': return this._sanitizer.bypassSecurityTrustScript(value); 
     case 'url': return this._sanitizer.bypassSecurityTrustUrl(value); 
     case 'resourceUrl': return this._sanitizer.bypassSecurityTrustResourceUrl(value); 
     default: throw new Error(`Invalid safe type specified: ${type}`); 
    } 
    } 

} 

これはのラインでありますHTML:

<div [innerHTML]="selectedArticle.body | safe: 'html'"></div> 

もうコードを見たい場合は教えてください。

+0

、あなたの問題のいずれかの解決策を見つけますか?私は同じ問題を抱えていて、何の解決策も得ていない。 – user3739018

答えて

1
<a (click)="recordLinkClick()" target="_blank" href="#">Test link</a> 

あなたは、このアンカーは、角innerHTMLで入れることにしたい場合はあなたはDOMにそれを置く前 HTMLをコンパイルせずにそれを登録しませます。動的な角度2のHTMLをコンパイルするための

のステップはここに覆われている:How can I use/create dynamic template to compile dynamic Component with Angular 2.0?

+0

私はhtmlをコンパイルしてDOMに入れる必要があるようです。どのようにまだ考えている。何か案は? – AngularM

関連する問題