Zaktualizuj v8
Poniższe odpowiedzi działają, ale narażają Twoją aplikację na zagrożenia bezpieczeństwa XSS! . Zamiast używać this.sanitizer.bypassSecurityTrustResourceUrl(url)
, zaleca się użyciethis.sanitizer.sanitize(SecurityContext.URL, url)
Aktualizacja
Dla wersji RC.6 ^ użyj DomSanitizer
Plunker
A dobrą opcją jest użycie do tego czystej rury:
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);
}
}
pamiętaj, aby dodać nowe SafePipe
do declarations
tablicy AppModule. ( jak widać w dokumentacji )
@NgModule({
declarations : [
...
SafePipe
],
})
html
<iframe width="100%" height="300" [src]="url | safe"></iframe>
Plunker
Jeśli używasz embed
tagu, może to być dla Ciebie interesujące:
Stara wersja RC.5
Możesz wykorzystać w DomSanitizationService
następujący sposób:
export class YourComponent {
url: SafeResourceUrl;
constructor(sanitizer: DomSanitizationService) {
this.url = sanitizer.bypassSecurityTrustResourceUrl('your url');
}
}
A następnie powiąż url
w swoim szablonie:
<iframe width="100%" height="300" [src]="url"></iframe>
Nie zapomnij dodać następujących importów:
import { SafeResourceUrl, DomSanitizationService } from '@angular/platform-browser';
Próbka Plunker