【问题标题】:angular2 data binding by using reference data types in a service使用服务中的引用数据类型进行 angular2 数据绑定
【发布时间】:2016-07-27 00:13:05
【问题描述】:

所以我最近发布了angular2 data binding between service and component properties,Thierry 指出了一些有趣的事情。

如果我有一个引用数据类型,如数组或存储在服务(singelton)中的对象,并在指向它的各种组件中创建引用,则当从任何地方更新对象时,视图将为所有组件更新(并且它可以工作!)。

就我而言,我正在构建一个小型论坛,其中需要同时在各种组件中显示/查看线程对象(例如预览、主视图、仪表板......)。对于更新/编辑文本字段,这可能非常方便。

现在我想知道这是否可以保存使用?

【问题讨论】:

  • 如果您的文本字段值也存储在对象中(因此存储在引用类型中),那么可以,使用它是安全的。如果您想使用原始类型,请参阅 Thierry 的回答。食谱还有一个使用主题的示例:angular.io/docs/ts/latest/cookbook/…

标签: data-binding angular angular2-services


【解决方案1】:

您需要利用 observables 了解哪些组件将在字段发生更改时收到通知。

类似的东西:

export class Service {
  name = "Luke";
  nameUpdated = new Subject();

  getName() {
    return this.name;
  }

  updateName() {
    this.name = 'Luke1';
    this.nameUpdated.next(this.name);
  }
}

在组件中:

this.name = this._service.name;
this._service.nameUpdated.subscribe(name => {
  this.name = name;
});

看到这个 plunkr:https://plnkr.co/edit/CRE92tdCsteoS2MVeGfh?p=preview

【讨论】:

  • 您现在添加的是一种更新视图以适应服务中原始数据类型更改的方法,对吧? (我猜新的主题是可观察的?)。无论如何感谢您的帮助!
  • 事实上,您的组件现在会收到服务中的更新通知,并且可以相应地更新视图绑定的属性。是的,主题类继承了 Observable 和 Observer……不客气!
  • 我确实需要了解更多有关 observables 的知识,但到目前为止,您能找到的主要是 rxJS 和 HTTP,您对从哪里开始有什么建议吗?
猜你喜欢
  • 2018-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-10
  • 2013-08-13
  • 1970-01-01
  • 2011-01-19
  • 2012-04-26
相关资源
最近更新 更多