0

我正在使用 angular2-meteor。

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

  1. 一种方式是流星方式:使用this.autorunand Session.get
  2. 另一种方式是 angular2 方式:使用Injectableservice with EventEmitter.

应该先走哪条路?或者有没有其他更好的方法?谢谢

4

2 回答 2

0

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

尽管angular2-meteor 教程到目前为止还没有关于使用或选择Angular 2 服务Meteor Session的示例。

但我觉得angular 2在前端领先,而流星使反应更容易,也可以处理所有后端的事情。

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

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

于 2016-02-28T03:11:34.260 回答
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或将订阅项保留在 appState 中。

请考虑到组件内由@injectable 处理的所有订阅都是由此类组件导入的。警惕组件/服务之间的冲突订阅。

于 2017-04-12T17:57:42.597 回答