registerOnTouched是什么?

时间:2017-06-01 21:38:04

标签: angular

创建使用ngModel的自定义表单元素时,必须提供NG_VALUE_ACCESSOR,这又要求组件实现ControlValueAccessor,其中包含一个名为 {{的方法1}} 即可。所有angular.io文档都说这是:

registerOnTouched
     

设置控件接收触摸事件时要调用的函数。

Angular文档听起来像是用于触摸输入,但我认为它是registerOnTouched(fn: any) : void 看待用户是否曾与输入交互的方式的一部分。文档中似乎缺少一些关于“触摸事件”是什么的信息,以及如何在组件外部注册和使用“onTouch”处理程序。

这是为了什么?怎么用?谁提供ngForm? ...开发人员使用我的组件(fn),还是只使用Angular本身?我已经看到一些例子,只是注册一个处理程序,然后从不调用它,或忽略它。如果是这种情况,为什么我需要实施它呢?

“触摸事件”的端到端示例可能会清除这一切。

1 个答案:

答案 0 :(得分:4)

An issue was createdthe documentation for registerOnTouched后来发生了变化:

  

注册一个回调函数,当控件收到模糊事件时应调用该函数。

     

这在初始化时由表单API调用,因此它可以在模糊时更新表单模型。

     

...

请参阅the documentation for registerOnTouched

注册触摸处理程序会导致(touched)="handler()"在自定义输入上正确设置ngForm类和ng-touched类。 Here's an example on plunker.

<击>

我不确定触摸事件的组成部分,也不知道在触摸自定义输入时直接检查或收听的方法。