2016-01-31 42 views
0

我正在使用angular2-meteor。angular2-meteor項目中兩個組件之間的傳遞值

當我試圖通過兩個組件之間的值(當在第一單元的值的變化,創造第二個組件中的事件,並使用這個新的值),我有兩種方法現在:

  1. 一種方式是流星方式:使用this.autorunSession.get
  2. 另一種方式是angular2方式:使用Injectable服務與EventEmitter

哪種方式應該優先?或者還有其他更好的方法嗎?謝謝

+0

Angular應該負責組件到組件事件的通信。使用這些結構。 EventEmitter功能非常強大/靈活。 –

+0

@ToddWCrone謝謝你的建議 –

回答

0

現在我用angular2-meteor了一會兒。

雖然angular2-meteor tutorial沒有的例子到目前爲止,有關使用或選擇角2服務流星會議

但我覺得角2率先在前端,而流星使反應更容易,也處理所有後端的東西。

所以我用angular2的方式使用服務在組件之間共享。而服務是非常強大的,如@託德 - 瓦克隆說。

如果有人有更好的答案,我會改變接受那一個。

0

我發現創建一個名爲App.states.ts的新服務是可行的,該服務全局訪問並模仿Session(獲取/設置)。 我常用導入此服務,所有必需的組件,以獲取或設置新的值,例如User.status,company.profile,lastProduct

由於這項服務@injectable它也可以使用其他服務,如果數值尚未設定。 這讓我問一個變量在組件appState.getLastModifiedItem(),然後在app.states.ts我會寫這個函數來傳遞this.modifiedItem或兩種:

  • 請求另一個服務item.service.ts來獲取數據
  • 呼叫與itemCollection.findOne({...})另一個功能並返回這樣的價值。

您可以根據需要配置Mongo查詢,並將靜態數據存儲在appState中或將訂閱項目保存在appState中。

請注意,由組件中的@injectable處理的所有訂閱都是由此組件導入的。警惕組件/服務之間的訂閱衝突。