AngularJSの経験がなく、iframeのsrc属性の設定に関するチュートリアルに取り組んでいるAngular 2は初めてです。
<iframe width="100%" height="300" src="{{video.url}}"></iframe>
これは例外を投げます:
Error: unsafe value used in a resource URL context
at DomSanitizationServiceImpl.sanitize...
私は既に[src]
を使ったバインディングの使用を試みましたが成功しませんでした。私はおそらく何かが足りないので、これに対する解決策を見つけるのに苦労しました。
更新
RC.6 ^ version use 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
をAppModuleのdeclarations
配列に追加することを忘れないでください。 ( ドキュメントに見られるように )
@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';
これは私のために働きます。
import { Component,Input,OnInit} from '@angular/core';
import {DomSanitizer,SafeResourceUrl,} from '@angular/platform-browser';
@Component({
moduleId: module.id,
selector: 'player',
templateUrl: './player.component.html',
styleUrls:['./player.component.scss'],
})
export class PlayerComponent implements OnInit{
@Input()
id:string;
url: SafeResourceUrl;
constructor (public sanitizer:DomSanitizer) {
}
ngOnInit() {
this.url = this.sanitizer.bypassSecurityTrustResourceUrl(this.id);
}
}
これは私をAngular 5.2.0にします
sarasa.Component.ts
import { Component, OnInit, Input } from '@angular/core';
import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';
@Component({
selector: 'app-sarasa',
templateUrl: './sarasa.component.html',
styleUrls: ['./sarasa.component.scss']
})
export class Sarasa implements OnInit {
@Input()
url: string = "https://www.mmlpqtpkasjdashdjahd.com";
urlSafe: SafeResourceUrl;
constructor(public sanitizer: DomSanitizer) { }
ngOnInit() {
this.urlSafe= this.sanitizer.bypassSecurityTrustResourceUrl(this.url);
}
}
sarasa.Component.html
<iframe width="100%" height="100%" frameBorder="0" [src]="urlSafe"></iframe>
それはすべての人です!
constructor(
public sanitizer: DomSanitizer, ) {
}
私は4時間奮闘していました。問題はimgタグにありました。あなたが角括弧を 'src'に使うときex:[src]。この角度表現{{}}は使えません。下記のオブジェクト例から直接与えてください。角度表現{{}}を与えた場合補間エラーになります。
最初にngForを使って国を繰り返しました
*ngFor="let country of countries"
次に、これをimgタグに入れます。これです。
<img [src]="sanitizer.bypassSecurityTrustResourceUrl(country.flag)"
height="20" width="20" alt=""/>