Angular2では、サービスを使用するコンポーネント間でデータを共有しますか?角2、サービスを使用してコンポーネント間で配列データを共有する方法は?
object structure
{
data: 'data'
keys: ['key1', 'key2', ... , 'keyN']
}
* Service has a array of total objects.
totalObject = [object1, object2, ... , objectN]
私はこのようなサービスのselectedObjectを初期化します。
selectedObject = totalObject;
は、その後、私はこのようなコンストラクタにB成分のselectedObjectを初期化します。
constructor(private wordService: WordService) {
this.words = wordService.selectedWords;
}
最初に、コンポーネントBがすべてのオブジェクトを正しく表示しました。 しかし、サービスが新しい配列をselectedObjectに初期化すると、コンポーネントBは選択されたオブジェクトを表示できません。
// It's not working...
// remove
this.selectedWords.splice(0, this.selectedWords.length);
// add
for(let i in WORDS) {
if(WORDS[i].keys.indexOf(key) >= 0) {
this.selectedWords.push(WORDS[i]);
}
}
代わりの配列を再現し、新しい項目をプッシュするか、常にwordService.selectedWordsを参照してください。私は第二の選択肢を選ぶだろう。 –
@KasperZiemianekコメントありがとうございました!私は最初の選択肢を理解していますが、2番目の選択肢で「常に参照する」という意味は何ですか? –
@ KasperZiemianek私は最初のオプションを使用しましたが、動作しません。追加コード。 –