Обновление v8
Приведенные ниже ответы работают, но подвергают ваше приложение угрозам безопасности XSS! , Вместо использования this.sanitizer.bypassSecurityTrustResourceUrl(url)
рекомендуется использоватьthis.sanitizer.sanitize(SecurityContext.URL, url)
Обновить
Для версии RC.6 ^ используйте DomSanitizer
Plunker
И хорошим вариантом для этого является использование чистой трубы:
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>
Plunker
Если вы используете 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';
Образец плунжера