2016-01-31 43 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处理的所有订阅都是由此组件导入的。警惕组件/服务之间的订阅冲突。