2017-06-29 8 views
0

私はiframeを作成する1つの角度サービスを持っています。今、このiframeのonLoadで、同じサービスのいくつかの関数を呼びたいと思います。プログラムで作成されたiframeのonLoadでthis.somefunction()を呼び出す方法

private createIframe() { 
    let iframe = document.createElement('iframe'); 
    iframe.onload = function() { this.somefunction();} 
    iframe.style.display = 'none'; 
    this.aAuthService.createLoginUrl('').then(function (url) { 
     iframe.src = url; 
    }); 
    document.body.appendChild(iframe); 
} 

private somefunction() {...} 

「HTMLIframeElementに何らかの機能がありません」というエラーが表示されます。

iframeを動的に作成しているときに、someload()をonloadから呼び出すにはどうすればよいですか?ここで

答えて

1

のことだ:

iframe.onload = function() { this.somefunction();} 

thisは、あなたのサービスクラスを指していないが、それは実際には無名関数を指していますので、あなたは無名関数のスコープにthisをバインドする必要があるので、このどちらか.somefunctionは、(存在しない)フレーム内の特定のプロパティの代わりにclassメソッドを参照するか、fat arrow関数がローカル関数スコープの代わりにレキシカルスコープを参照するため、代わりにfat arrow関数を使用します。

iframe.onload =() => this.somefunction() 

これでいいはずです。

関連する問題