Mettre à jour v8
Les réponses ci-dessous fonctionnent mais exposent votre application aux risques de sécurité XSS! . Au lieu d'utiliser this.sanitizer.bypassSecurityTrustResourceUrl(url)
, il est recommandé d'utiliserthis.sanitizer.sanitize(SecurityContext.URL, url)
Mettre à jour
Pour la version RC.6 ^ , utilisez DomSanitizer
Plunker
Et une bonne option consiste à utiliser pure pipe pour cela:
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);
}
}
n'oubliez pas d'ajouter votre nouveau SafePipe
au declarations
tableau de l'AppModule. ( comme vu sur la documentation )
@NgModule({
declarations : [
...
SafePipe
],
})
html
<iframe width="100%" height="300" [src]="url | safe"></iframe>
Plunker
Si vous utilisez une embed
balise, cela peut être intéressant pour vous:
Ancienne version RC.5
Vous pouvez utiliser DomSanitizationService
comme ceci:
export class YourComponent {
url: SafeResourceUrl;
constructor(sanitizer: DomSanitizationService) {
this.url = sanitizer.bypassSecurityTrustResourceUrl('your url');
}
}
Et puis liez-vous url
dans votre modèle:
<iframe width="100%" height="300" [src]="url"></iframe>
N'oubliez pas d'ajouter les importations suivantes:
import { SafeResourceUrl, DomSanitizationService } from '@angular/platform-browser';
Échantillon Plunker