2017-03-20 3 views
0

Ich benutze Angular2 mit Typoskript.Angular2 stoppt (klicken) funktioniert bei Verwendung von DomSanitizer

Ich habe eine Pipe, die in Bezug auf das Rendern der HTML-Fein funktioniert. Problem ist die DomSanitizer scheint das (Klick-) Ereignis von der Arbeit zu stoppen.

Wenn ich den HTML-Code in der console.log (F12) überprüfe, scheint der (Klick-) Code dort zu sein und nicht entfernt zu werden.

Aber wenn ich auf den Link klicke, tut es nichts.

Dies ist ein Beispiel der Verbindung (es ruft eine Funktion in meiner Komponente):

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

Dies ist das Rohr:

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}`); 
    } 
    } 

} 

Dies ist die Linie der HTML:

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

Lassen Sie mich wissen, wenn Sie mehr Code sehen müssen.

+0

Haben Sie gefunden, eine Lösung für Ihr Problem? Ich habe das gleiche Problem und bekomme keine Lösung. – user3739018

Antwort

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

Wenn Sie diese Anker wollen von innerHTML Winkel Willen setzen in werden nicht registrieren es ohne Sie die HTML kompilieren, bevor es in das DOM setzen.

Die Schritte für die html für Winkel 2 sind hier abgedeckt dynamisch kompilieren: How can I use/create dynamic template to compile dynamic Component with Angular 2.0?

+0

scheint, dass ich das HTML kompilieren muss, bevor ich es in das DOM setze. Bin mir aber noch nicht sicher. Irgendwelche Ideen? – AngularM

Verwandte Themen