我正在使用angular2-meteor。
当我尝试在两个组件之间传递值时(当第一个组件中的值更改时,在第二个组件中创建一个事件并使用这个新值),我现在有两种方法:
this.autorun
和Session.get
。Injectable
服务与EventEmitter
一起使用。应该事先采用哪种方式?或者还有其他更好的方法吗?感谢
答案 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处理的所有订阅都是由此类组件导入的。警惕组件/服务之间的订阅冲突。