2016-05-06 5 views

答えて

76

更新(最終2.0.0)

添加されていない結合構文を使用して追加することができません
import { Pipe, PipeTransform } from '@angular/core'; 
import { DomSanitizer } from '@angular/platform-browser'; 

@Pipe({name: 'safeHtml'}) 
export class SafeHtml implements PipeTransform { 
    constructor(private sanitizer:DomSanitizer){} 

    transform(html) { 
    return this.sanitizer.bypassSecurityTrustStyle(style); 
    // return this.sanitizer.bypassSecurityTrustHtml(style); 
    // return this.sanitizer.bypassSecurityTrustScript(value); 
    // return this.sanitizer.bypassSecurityTrustUrl(value); 
    // return this.sanitizer.bypassSecurityTrustResourceUrl(value); 
    } 
} 

も参照してください。https://angular.io/api/platform-browser/DomSanitizer

更新

<div [innerHTML]="someHtml | safeHtml" 

これはRC.2に固定しなければならない

元RC.6にDomSanitizer名前に変更されようとしている

0333333も参照してください。


Angular2はDomSanitizer.bypassSecurityTrustStyle(...)

を使用して、信頼できるような値をマークすることができ、またhttps://github.com/angular/angular/issues/8491#issuecomment-217467582

を参照してくださいRC.1

[innerHTML]=...[src]="..."のように結合CSS値とプロパティの消毒をintruduced

import {DomSanitizer} from '@angular/platform-browser'; 
... 
constructor(sanitizer: DomSanitizationService) { 
    this.backgroundImageStyle = sanitizer.bypassSecurityTrustStyle('url(' + this.image + ')'); 
    // for HTML 
    // this.backgroundImageStyle = sanitizer.bypassSecurityTrustHtml(...); 

} 

を使用し、信頼できないプレーンストリングの代わりにこの値にバインドします。

これは

someHtml = `<a href="#" onClick="alert(document.cookie);">click to see the awesome</a>`; 

@Pipe({name: 'safeStyle'}) 
export class Safe { 
    constructor(private sanitizer:Sanitizer){} 

    transform(style) { 
    return this.sanitizer.bypassSecurityTrustStyle(style); 
    // return this.sanitizer.bypassSecurityTrustHtml(style); 
    // return this.sanitizer.bypassSecurityTrustScript(value); 
    // return this.sanitizer.bypassSecurityTrustUrl(value); 
    // return this.sanitizer.bypassSecurityTrustResourceUrl(value); 
    } 
} 
<div [ngStyle]="someStyle | safeStyle"></div> 

のようなパイプでもラップすることができますが、まだかかわらず、働いている: - [(進行中のそれの仕事)

Plunker example(角2.0.0-rc-1)

も参照してくださいAngular 2 Security Tracking Issue

https://angular.io/docs/ts/latest/api/platform-browser/index/DomSanitizer-class.htmlヒントについて{{...}}

サニタイズコンテンツがprop="{{sanitizedContent}}"{{}}ためstringyfiesサニタイズを破った割り当てられる前値を使用してバインドすることはできません。

+0

も参照してください。http://stackoverflow.com/questions/37238757/angular2-rc1-sanitizer-inserts-double-quotes-inside-styles-breaking-it –

+0

パイプは素晴らしいアイデアです。ありがとうございました! –

+0

何らかの理由で、このサービスを使用しようとすると、依存関係注入が機能しません。サービスの実装を取得する代わりに、抽象サービス(空のオブジェクト)を取得します。なぜこのようなことが起こったのか考えていますか?何か不足していますか? – yarons

関連する問題

 関連する問題