Aggiorna v8
Le risposte di seguito funzionano ma espongono la tua applicazione ai rischi per la sicurezza XSS! . Invece di utilizzare this.sanitizer.bypassSecurityTrustResourceUrl(url)
, si consiglia di utilizzarethis.sanitizer.sanitize(SecurityContext.URL, url)
Aggiornare
Per la versione RC.6 ^ utilizzare DomSanitizer
Plunker
E una buona opzione è usare la pipa pura per questo:
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);
}
}
ricordarsi di aggiungere il nuovo SafePipe
alla declarations
serie del AppModule. ( come visto sulla documentazione )
@NgModule({
declarations : [
...
SafePipe
],
})
html
<iframe width="100%" height="300" [src]="url | safe"></iframe>
Plunker
Se usi il embed
tag questo potrebbe essere interessante per te:
Vecchia versione RC.5
Puoi sfruttare in DomSanitizationService
questo modo:
export class YourComponent {
url: SafeResourceUrl;
constructor(sanitizer: DomSanitizationService) {
this.url = sanitizer.bypassSecurityTrustResourceUrl('your url');
}
}
E quindi associare a url
nel modello:
<iframe width="100%" height="300" [src]="url"></iframe>
Non dimenticare di aggiungere le seguenti importazioni:
import { SafeResourceUrl, DomSanitizationService } from '@angular/platform-browser';
Campione di Plunker