Perbarui v8
Jawaban di bawah ini berfungsi tetapi mengekspos aplikasi Anda terhadap risiko keamanan XSS! . Alih-alih menggunakan this.sanitizer.bypassSecurityTrustResourceUrl(url)
, disarankan untuk digunakanthis.sanitizer.sanitize(SecurityContext.URL, url)
Memperbarui
Untuk versi RC.6 ^ gunakan DomSanitizer
Plunker
Dan pilihan yang baik adalah menggunakan pipa murni untuk itu:
import { Pipe, PipeTransform } from '@angular/core';
import { DomSanitizer} from '@angular/platform-browser';
@Pipe({ name: 'safe' })
export class SafePipe implements PipeTransform {
constructor(private sanitizer: DomSanitizer) {}
transform(url) {
return this.sanitizer.bypassSecurityTrustResourceUrl(url);
}
}
ingatlah untuk menambahkan yang baru SafePipe
ke declarations
larik AppModule. ( seperti yang terlihat pada dokumentasi )
@NgModule({
declarations : [
...
SafePipe
],
})
html
<iframe width="100%" height="300" [src]="url | safe"></iframe>
Plunker
Jika Anda menggunakan embed
tag, ini mungkin menarik untuk Anda:
Versi lama RC.5
Anda dapat memanfaatkan DomSanitizationService
seperti ini:
export class YourComponent {
url: SafeResourceUrl;
constructor(sanitizer: DomSanitizationService) {
this.url = sanitizer.bypassSecurityTrustResourceUrl('your url');
}
}
Dan kemudian ikat ke url
dalam templat Anda:
<iframe width="100%" height="300" [src]="url"></iframe>
Jangan lupa untuk menambahkan impor berikut:
import { SafeResourceUrl, DomSanitizationService } from '@angular/platform-browser';
Sampel plunker