Angular4真的是2向数据绑定吗?

时间:2018-09-15 20:36:00

标签: javascript angular data-binding angular-ngmodel

我对Angular2 / 4/5/6的了解是,由于 [(ngModel)] ,可以实现2路数据绑定-就像通过Angular1中发生的那样$ scope。

现在,我浏览了该网站,该网站清楚地表明Angular4中无法进行2向数据绑定。我很困惑。有人真的可以澄清一下吗?在Angular 2/4/5/6中,是否可以进行2向数据绑定?

enter image description here

链接:https://dzone.com/articles/understanding-output-and-eventemitter-in-angular

2 个答案:

答案 0 :(得分:4)

enter image description here

  

在Angular 2/4/5/6中是否可以进行2-Way数据绑定?

不是,不是[(ngModel)]不是双向数据绑定。它只是用于同时进行事件绑定和属性绑定的语法糖。

进一步了解

1。 Do you really know what unidirectional data flow means in Angular

2。 Change Detection Reinvented Victor Savkin
  3。 TWO-WAY DATA BINDING IN ANGULAR

答案 1 :(得分:1)

Angular是一个JavaScript框架,并且javascript有一些限制,不允许进行真正的双向数据绑定。

实际上,由于本机javascript API允许侦听输入字段上的事件,因此使第一种方法(从模板到变量)成为可能,但是当变量更改时不会发出事件,因此另一种方法是javascript API不可行。

这里是detection change,它由Zone.js启用,Angular“侦听”您的代码并触发对这三种类型的事件的更改检测:

  • 页面上的用户事件(点击,提交,模糊等)
  • XMLHttpRequest已结束
  • 计时器(setTimeoutsetInterval)触发了某些功能

更改检测会使用每个绑定变量更新模板。

这就是双向数据绑定实际上存在的方式。

[(ngModel)][ngModel]="variable" (ngModelChange)="variable = $event"的语法糖:这是两种方式