在 angular2-meteor 项目中的两个组件之间传递值
Passing value between two components in angular2-meteor project
我正在使用 angular2-meteor。
当我尝试在两个组件之间传递一个值时(当第一个组件中的值发生变化时,在第二个组件中创建一个事件并使用这个新值),我现在有两种方法:
- 一种方式是流星方式:使用
this.autorun
和 Session.get
。
- 另一种方式是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.
之间的订阅冲突
我正在使用 angular2-meteor。
当我尝试在两个组件之间传递一个值时(当第一个组件中的值发生变化时,在第二个组件中创建一个事件并使用这个新值),我现在有两种方法:
- 一种方式是流星方式:使用
this.autorun
和Session.get
。 - 另一种方式是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.
之间的订阅冲突