2017-03-22 11 views
0

AngularプロジェクトでGoogleインスタントプレビューを実装しようとしています。しかし、iframeタグを使用すると、何も表示されません。Angular2 - Angular2を使用してGoogleインスタントプレビューを実装するにはどうすればよいですか?

htmlコード -

<div class="text-result" *ngIf="Display('all')"> 
       <div *ngFor="let item of items$|async" class="result"> 
        <div class="title"> 
         <a href="{{item.link}}">{{item.title}}</a> 
         <div class="box"> 
          <iframe src="{{item.link}}" width="500px" height="500px"></iframe> 
         </div> 
        </div> 
        <div class="link"> 
         <p>{{item.link}}</p> 
        </div> 
        <div> 
         {{item.pubDate|date:'fullDate'}} 
        </div> 
       </div> 
      </div> 

CSSコード -

.box{ 
    display: none; 
    width: 100%; 
} 

a:hover + .box,.box:hover{ 
    display: block; 
    position: relative; 
    z-index: 100; 
} 

答えて

2

XSS攻撃を回避するためには、角度はdynamicly IFRAMEのsrc属性に結合することはできません。 DomSanitizerクラスを使用してURLを許可することができます。 DomSanitizerを注入し、bypassSecurityTrustResourceUrlメソッドを使用する必要があります。

constructor(domsanitizer: DomSanitizer) { 
    let url = "http://some-random-url.tld"; 
    this.myUrl = this.domsanitizer.bypassSecurityTrustResourceUrl(url); 
} 

とテンプレートで:

<iframe [src]="myUrl"></iframe> 
+0

は私の質問に時間を与えていただき、ありがとうございます。実際には、Webサービスから結果を取得しています。ですから、リンクを取得するには '{{item.link}}'を使用します。あなたが言ったように、 'let url =" {{item.link}} "'と書くことができますか?または私はこのように書く必要があります - 'let url =" http://web-service-url.tld "' –

+0

私はコードを知っていません。 'SafeResourceUrl'を渡し、iframeの' src'に 'string'を渡さない限り、あなたが望むことをすることができます。 – n00dl3

関連する問題