在Angular 1中,例如我们会在元素内部说ng-click="wasClicked()"
,
但现在我们说(click)="wasClicked()"
。为什么是这样?我想到的唯一想法是Angular 2不必为每个元素事件都有一个属性,即括号内的任何东西都会被处理,无论是否有一个有意义的处理程序?
答案 0 :(得分:3)
对于事件
决定()
有各种各样的要点
()
event
的括号有意义,因为Angular 2通过单一语法糖替换了几乎(20)event
A1指令。(myCustomEvent)="myHandler($event)"
中包含任何customEvent名称($event
是事件对象)。()
视为有效的HTML。旁注
与()
一样,括号用单个()
括号替换几个A1 20指令同样[]
属性绑定也取代16
角度指令。
很棒Misko's Video解释为什么他决定()
参加活动& []
用于属性绑定。
答案 1 :(得分:2)
长期讨论应该使用什么语法。最后()
被确定了。
在Angular2中,没有针对每个受支持事件的特定指令。
(click)="clickHandler($event)"
将clickHandler
方法注册为click
事件的处理程序,其中click
可以是任何有效的事件名称,也可以是自定义事件。
为任何元素未发出的事件注册处理程序也是有效的。如下所示,您无法事先知道发生了什么事件。
这增加了灵活性,因为新事件不需要任何代码更改或新指令。
例如,您可以致电
element.dispatchEvent(new CustomEvent('my-xxx-event', { bubbles: true }));
并使用
收听(my-xxx-event)="doSomething($event)
没有任何额外的工作。