创建使用ngModel
的自定义表单元素时,必须提供NG_VALUE_ACCESSOR
,这又要求组件实现ControlValueAccessor
,其中包含一个名为 {{的方法1}} 即可。所有angular.io文档都说这是:
registerOnTouched
设置控件接收触摸事件时要调用的函数。
Angular文档听起来像是用于触摸输入,但我认为它是registerOnTouched(fn: any) : void
看待用户是否曾与输入交互的方式的一部分。文档中似乎缺少一些关于“触摸事件”是什么的信息,以及如何在组件外部注册和使用“onTouch”处理程序。
这是为了什么?怎么用?谁提供ngForm
? ...开发人员使用我的组件(fn
),还是只使用Angular本身?我已经看到一些例子,只是注册一个处理程序,然后从不调用它,或忽略它。如果是这种情况,为什么我需要实施它呢?
“触摸事件”的端到端示例可能会清除这一切。
答案 0 :(得分:4)
An issue was created和the documentation for registerOnTouched后来发生了变化:
注册一个回调函数,当控件收到模糊事件时应调用该函数。
这在初始化时由表单API调用,因此它可以在模糊时更新表单模型。
...
请参阅the documentation for registerOnTouched。
注册触摸处理程序会导致(touched)="handler()"
在自定义输入上正确设置ngForm
类和ng-touched
类。 Here's an example on plunker. 击>
我不确定触摸事件的组成部分,也不知道在触摸自定义输入时直接检查或收听的方法。