【问题标题】:Angular2 parent -> child -> parent bindingAngular2父->子->父绑定
【发布时间】:2017-01-23 16:42:05
【问题描述】:

我在工作中看到了以下一段代码 - http://plnkr.co/edit/5z4VEQ?p=preview

<app-component2 [(value)]="value"></app-component2> 

可以看到我们给一个子组件传了一个值,当它发生变化的时候再传回给父组件(onChange只会在焦点离开输入框后触发)。

现在,即使“valueChange”事件发射器没有在任何地方订阅,这段代码也能正常工作。仅当子组件具有事件发射器并且仅当所述事件发射器被称为 valueChange 时才会起作用。

Angular 自动连接 value 和 valueChange 的幕后显然有一些魔力,但我在文档中找不到这个/不确定这是否真的是受支持的功能?

【问题讨论】:

  • 你能链接到具体的部分吗?这是一个相当长的文档,但我确实浏览了它并找不到示例
  • 输入(父对子):angular.io/docs/ts/latest/cookbook/… 输出(子对父):angular.io/docs/ts/latest/cookbook/…
  • 是的,我已经阅读了有关输入输出的信息,但是他们在代码中使用显式绑定来输出输出,因为我们似乎能够在值上使用模板绑定(输入而不是输出)并且它神奇地知道与事件发射器建立连接(如果名称是 valueChange - 其中 value 是我的变量的名称)
  • 好的,如果您正在寻找的是数据绑定(根据下面的答案),我建议您稍微更改一下问题的标题,因为这与亲子沟通无关; )

标签: angular


【解决方案1】:

您观察到的行为是Two way data binding,您可以在Template Synatx Guide. 阅读更多信息

Cheat sheet中也提到过

希望这会有所帮助!

【讨论】:

  • 是的,titleChange 绑定是我错过的。这在angular.io/docs/ts/latest/cookbook/component-communication.html(组件通信页面)中没有提到,对我来说有点太神奇了(事件发射器必须命名为titleChange)。但你明白了:D
  • 嗯,我对 Angular 的体验始于双向数据绑定,这是 Angular 为我带来的核心功能之一。因此,对于许多人来说,双向绑定的工作方式是很自然的,我想这就是为什么它可能没有记录在案,但它应该是,干杯!!
  • 我完全支持两个数据绑定,但是要求您创建一个特别命名的输出以使其工作感觉有点奇怪。我已经在 Ember 中看到过它(我认为),这是我不使用 Ember 的部分原因:D
猜你喜欢
  • 2017-10-19
  • 2016-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-03
  • 1970-01-01
  • 2016-07-18
  • 2018-02-03
相关资源
最近更新 更多