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

Is Angular4 really 2-Way data-Binding?

我从 Angular2/4/5/6 中学到的是,由于 [(ngModel)],双向数据绑定在其中是可能的——就像它发生的那样通过 $scope 在 Angular1 中。

现在,我看到了这个网站,该网站明确指出 Angular4 中无法进行 2 向数据绑定。我很困惑。有人能真正澄清一下吗——在 Angular 2/4/5/6 中是否可以进行 2 向数据绑定?

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

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

事实上,第一种方式(模板到变量)成为可能,这要归功于原生 javascript API 允许监听输入字段上的事件,但没有发出事件这样的事情当一个变量改变时,所以另一种方法是不可行的 javascript API.

这里出现了 detection change,通过 Zone.js、Angular "listens" 到您的代码并触发对这三种事件的更改检测:

  • 页面上的用户事件(点击、提交、模糊处理等...)
  • XMLHttpRequest 已结束
  • 定时器(setTimeoutsetInterval)触发了一些函数

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

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

顺便说一下,[(ngModel)][ngModel]="variable" (ngModelChange)="variable = $event" 的语法糖:这是两种方式

whether 2-Way data binding is possible or Not in Angular 2/4/5/6?

不,不是[(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