2017-09-29 13 views
0

次のシナリオは可能ですか?Angular 2で1つのアプリケーションの2つのタブ間の相互作用が可能ですか?

1つのアプリケーションがあり、ブラウザの2つの異なるタブでアプリケーションの2つの部分を開きます。アプリケーションのある部分を「リスニングモード」にすることは可能ですか?アプリケーションのある部分を変更すると、すぐに他の部分に変更が実装され、タブが自動的に更新され、変更が表示されます。 1つのタブでアプリケーションの1つの部分だけをすべて処理するとどうなりますか?

PS:私はAngular 2フレームワークを参照しています。

+0

はい。サービスからオブザーバブルを設定し、両方のコンポーネントをサブスクライブすることができます。 – pixelbits

答えて

0

ただのジャバスクリプトを使用してください。これにはstorage eventがあり、イベントトレースはストレージで変更されます。あなたは約2別のブラウザタブを話している場合はサービスこの

$(window).on('storage', storageChanged); 
function storageChanged(){ 
    //all your tabs will listen this event  
} 
0

ようにしてください、私はそうは思いません。しかし、ストレージに加えられた変更を聴くことができる方法を考えることができます。この場合、いずれかのタブには、ストレージ項目を変更し、他の一つは同じ項目に耳を傾け、それらを適用している:

$(window).on('storage', storage_changed); 

function storage_changed(event) 
{ 
    if (ev.originalEvent.key != 'youritemname') return; // ignore other changes 
    var message = JSON.parse(ev.originalEvent.newValue); 
    if (!message) return; 

    //apply the changes to the second tab 

} 

あなたのタブが同じコードを使用していない場合は、あなたがにコードを追加する必要があります。どちらもそうでなければ十分でしょう。

名前がyouritemnameのアイテムが変更されると、イベントが発生し、両方のタブでこれを聞き取り、それに基づいて行動することができます。

良いことは、ストレージを読み取る必要がないことです。

0

各タブが新しい​​角型インスタンスを開き、それが共有されないため、恐れはありません。

関連する問題