我正在使用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谢谢你的建议 –