Оновлення v8
Нижче відповіді працюють, але викриваєте вашу заявку ризикам безпеки XSS! . Замість використання this.sanitizer.bypassSecurityTrustResourceUrl(url)
рекомендується використовуватиthis.sanitizer.sanitize(SecurityContext.URL, url)
Оновлення
Для версії RC.6 ^ використовуйте DomSanitizer
Плункер
І хорошим варіантом є використання для цього чистої труби:
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);
}
}
не забудьте додати ваш новий SafePipe
до declarations
масиву AppModule. ( як видно з документації )
@NgModule({
declarations : [
...
SafePipe
],
})
html
<iframe width="100%" height="300" [src]="url | safe"></iframe>
Плункер
Якщо ви використовуєте embed
тег, це може бути цікавим для вас:
Стара версія RC.5
Ви можете використовувати DomSanitizationService
так:
export class YourComponent {
url: SafeResourceUrl;
constructor(sanitizer: DomSanitizationService) {
this.url = sanitizer.bypassSecurityTrustResourceUrl('your url');
}
}
А потім прив’яжіть до url
свого шаблону:
<iframe width="100%" height="300" [src]="url"></iframe>
Не забудьте додати наступний імпорт:
import { SafeResourceUrl, DomSanitizationService } from '@angular/platform-browser';
Зразок Плункер