我正在使用 angular2-meteor。
当我尝试在两个组件之间传递一个值时(当第一个组件中的值发生变化时,在第二个组件中创建一个事件并使用这个新值),我现在有两种方法:
- 一种方式是流星方式:使用
this.autorun
andSession.get
。 - 另一种方式是 angular2 方式:使用
Injectable
service withEventEmitter
.
应该先走哪条路?或者有没有其他更好的方法?谢谢
我正在使用 angular2-meteor。
当我尝试在两个组件之间传递一个值时(当第一个组件中的值发生变化时,在第二个组件中创建一个事件并使用这个新值),我现在有两种方法:
this.autorun
and Session.get
。Injectable
service with EventEmitter
.应该先走哪条路?或者有没有其他更好的方法?谢谢
现在我使用了 angular2-meteor 一段时间。
尽管angular2-meteor 教程到目前为止还没有关于使用或选择Angular 2 服务或Meteor Session的示例。
但我觉得angular 2在前端领先,而流星使反应更容易,也可以处理所有后端的事情。
所以我采用了 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({...})
并返回这样的值。您可以根据需要配置 Mongo 查询,并将静态数据存储在 appState 中appState
或将订阅项保留在 appState 中。
请考虑到组件内由@injectable 处理的所有订阅都是由此类组件导入的。警惕组件/服务之间的冲突订阅。