在angular2-meteor项目中传递两个组件之间的值

时间:2016-01-31 16:32:53

标签: meteor angular angular2-meteor

我正在使用angular2-meteor。

当我尝试在两个组件之间传递值时(当第一个组件中的值更改时,在第二个组件中创建一个事件并使用这个新值),我现在有两种方法:

  1. 一种方式是流星方式:使用this.autorunSession.get
  2. 另一种方式是angular2方式:将Injectable服务与EventEmitter一起使用。
  3. 应该事先采用哪种方式?或者还有其他更好的方法吗?感谢

2 个答案:

答案 0 :(得分:0)

现在我使用了angular2-meteor一段时间。

虽然到目前为止angular2-meteor tutorial没有关于使用或选择 Angular 2服务 Meteor Session 的例子。

但我感觉棱角2 在前端领先,而 meteor 使反应更容易,并且还处理所有后端事物。

所以我使用angular2方式使用服务在组件之间共享。服务非常强大,就像@ todd-w-crone说的那样。

如果有人有更好的答案,我会转而接受那个。

答案 1 :(得分:0)

我发现创建一个名为App.states.ts的新服务是可行的,该服务可以全局访问并模仿Session(get / set)。 我通常会将此服务导入所有必要的组件以获取或设置新值,例如 User.status,company.profile,lastProduct 等。

由于此服务为@injectable,因此在尚未设置值的情况下,它也可以使用其他服务。 这允许我在组件appState.getLastModifiedItem()中请求变量,然后在app.states.ts中我会写这个函数来传递this.modifiedItem或者:

  • 请求其他服务item.service.ts获取数据
  • 使用itemCollection.findOne({...})调用另一个函数并返回此值。

您可以根据需要配置Mongo查询,并将静态数据存储在appState中,或者将订阅项保存在appState中。

请注意,组件中@injectable处理的所有订阅都是由此类组件导入的。警惕组件/服务之间的订阅冲突。