Atualização v8
As respostas abaixo funcionam, mas expõem seu aplicativo a riscos de segurança XSS! . Em vez de usar this.sanitizer.bypassSecurityTrustResourceUrl(url)
, é recomendável usarthis.sanitizer.sanitize(SecurityContext.URL, url)
Atualizar
Para a versão RC.6 ^ , use o DomSanitizer
Plunker
E uma boa opção é usar tubo puro para isso:
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);
}
}
lembre-se de adicionar seu novo SafePipe
à declarations
matriz do AppModule. ( como visto na documentação )
@NgModule({
declarations : [
...
SafePipe
],
})
html
<iframe width="100%" height="300" [src]="url | safe"></iframe>
Plunker
Se você usar a embed
tag, isso pode ser interessante para você:
Versão antiga RC.5
Você pode aproveitar DomSanitizationService
assim:
export class YourComponent {
url: SafeResourceUrl;
constructor(sanitizer: DomSanitizationService) {
this.url = sanitizer.bypassSecurityTrustResourceUrl('your url');
}
}
E, em seguida, vincule-o ao url
seu modelo:
<iframe width="100%" height="300" [src]="url"></iframe>
Não se esqueça de adicionar as seguintes importações:
import { SafeResourceUrl, DomSanitizationService } from '@angular/platform-browser';
Amostra Plunker