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

Passing value between two components in angular2-meteor project

我正在使用 angular2-meteor。

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

  1. 一种方式是流星方式:使用 this.autorunSession.get
  2. 另一种方式是angular2方式:使用Injectable服务与EventEmitter

应该优先选择哪种方式?或者还有其他更好的方法吗?谢谢

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

尽管 angular2-meteor tutorial 目前还没有关于使用或选择 Angular 2 服务Meteor Session[=25= 的示例].

但是我感觉angular2在前端领先,而meteor让reactivity更简单,也handle所有后端的东西。

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

如果谁有更好的答案,我会转为采纳

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

由于此服务是 @injectable 它也可以使用其他服务,以防尚未设置值。 这允许我在组件 appState.getLastModifiedItem() 中请求变量,然后在 app.states.ts 中我将编写此函数以传递 this.modifiedItem 或:

  • 请求另一个服务item.service.ts来获取数据
  • 使用 itemCollection.findOne({...}) 和 return 这样的值调用另一个函数。

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

请注意,组件内由@injectable 处理的所有订阅均由此类组件导入。警惕 components/services.

之间的订阅冲突