angular - registerOnTouched 有什么用?

标签 angular

创建使用 ngModel 的自定义表单元素时,必须提供 NG_VALUE_ACCESSOR ,这又要求组件实现 ControlValueAccessor ,它有一个名为 registerOnTouched 的方法。所有 angular.io 文档都是这样说的:

registerOnTouched(fn: any) : void

Set the function to be called when the control receives a touch event.

Angular 文档听起来像是触摸输入,但我认为这是 ngForm 查看用户是否曾与输入交互的方式的一部分。文档中似乎缺少一些关于什么是“触摸事件”以及应该如何从组件外部注册和使用“onTouch”处理程序的信息。

这到底是为了什么?它是如何使用的?谁提供了fn? ...开发人员使用我的组件 ((touched)="handler()"),还是仅使用 Angular 本身?我见过一些简单地注册处理程序的示例,然后从不调用它,或者忽略它。如果是这样,我为什么还需要实现它?

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

最佳答案

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

Registers a callback function that should be called when the control receives a blur event.

This is called by the forms API on initialization so it can update the form model on blur.

...

参见 the documentation for registerOnTouched .

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

<罢工>

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

关于angular - registerOnTouched 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44317462/

相关文章:

javascript - 禁用 Angular 8 表单输入字段

angular - 为什么我在 Angular 表单验证属性中需要后缀 "?"

Angular2 FullCalendar 回调无法访问的属性

angular - Ionic v4 - 检查模态是否打开

javascript - 如何以 Angular 重置ng-select

angular - Angular 2表达式中问号的含义是什么?

javascript - 如何使用 Angular2 将 html 代码附加到 div 元素

angular - 如何修复 Angular mat-expansion-panel 上的 ExpressionChangedAfterItHasBeenCheckedError

javascript - 如何在 Angular 4 中使用 jquery 插件

javascript - 如何使用angular2-moment显示时间格式