2016-09-14 41 views
0

我需要訪問發送到父組件中的子組件的Params變量。如何在不使用@Output的情況下在Angular2 rc6中的子/父組件中共享params變量?

我有以下結構:

路由:(節選)

{ 
     path: 'song', 
     component: SongExerciseComponent, 
     children: [ 
      { 
       path: 'reading/:id', 
       component: SongReadingComponent, 
      } 
     ] 
    } 

父組件只是一個模板保存導航鏈接。 我可以訪問:ID VAR的子組件,像這樣:

ngOnInit(): void { 
    this.route.params.forEach((params: Params) => { 
     if (params['id'] !== undefined) { 
     let id = +params['id']; 

現在我需要在父組件相同的變量父模板中使用。

這是最有效的方法嗎?共享服務? https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#parent-and-children-communicate-via-a-service

+1

輸出很好,但如果數據應該通過組件層次結構的多個層次傳遞,它們很麻煩。共享服務對我來說看起來很適合這種情況(導航)。服務本身可以是可觀察的或EventEmitter,類似於輸出的事件發射器。 – estus

回答

1

您可以創建一個共享服務或使用NGRX店,通過終極版爲Angular2啓發。

在那裏,你可以讀到它 - https://gist.github.com/btroncone/a6e4347326749f938510

這個方案的好處是,你可以訂閱變化和對他們的反應。另外,數據是不可變的,所以你不會錯誤地改變某些東西。如果它不重要,只需使用服務。

+0

有趣。不知道Ngrx。然而,我正在嘗試Angular2來避免像Redux這樣的事情,但似乎Angular2還沒有 - 如果它永遠不會存在的話。 – Cruclax

相關問題