我正在使用angular2-meteor。angular2-meteor項目中兩個組件之間的傳遞值
當我試圖通過兩個組件之間的值(當在第一單元的值的變化,創造第二個組件中的事件,並使用這個新的值),我有兩種方法現在:
- 一種方式是流星方式:使用
this.autorun
和Session.get
。 - 另一種方式是angular2方式:使用
Injectable
服務與EventEmitter
。
哪種方式應該優先?或者還有其他更好的方法嗎?謝謝
我正在使用angular2-meteor。angular2-meteor項目中兩個組件之間的傳遞值
當我試圖通過兩個組件之間的值(當在第一單元的值的變化,創造第二個組件中的事件,並使用這個新的值),我有兩種方法現在:
this.autorun
和Session.get
。Injectable
服務與EventEmitter
。哪種方式應該優先?或者還有其他更好的方法嗎?謝謝
現在我用angular2-meteor了一會兒。
雖然angular2-meteor tutorial沒有的例子到目前爲止,有關使用或選擇角2服務或流星會議。
但我覺得角2率先在前端,而流星使反應更容易,也處理所有後端的東西。
所以我用angular2的方式使用服務在組件之間共享。而服務是非常強大的,如@託德 - 瓦克隆說。
如果有人有更好的答案,我會改變接受那一個。
我發現創建一個名爲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處理的所有訂閱都是由此組件導入的。警惕組件/服務之間的訂閱衝突。
Angular應該負責組件到組件事件的通信。使用這些結構。 EventEmitter功能非常強大/靈活。 –
@ToddWCrone謝謝你的建議 –