angular - 在事件绑定中使用函数作为变量的概念是什么?
问题描述
我正在尝试调查ControlValueAccessor
,我注意到一些函数_onChange
作为变量,绑定到input
事件。请让我知道为什么_onChange
没有在事件上调用函数input
,这种事件绑定的意义是什么。
模板:
<input #passwordInput
type="password"
[id]="id"
class="form-control"
[disabled]="disabled"
(input)="_onChange($event.target.value)"
(blur)="_onTouched()"
>
零件:
_onChange = (value: any) => {
console.log(`At _onChange`);
};
解决方案
Sql_dummy,函数 _OnChange 是您在 registerOnChange 中分配的变量
registerOnChange(fn: any): void {
this._onChange = fn;
}
因此,每次调用此函数时,Angutar 都会通知应用程序控件已更改。您不能“覆盖”此功能。如果当您更改输入时想要做“更多”您使用的事情,例如
<input #passwordInput (input)="OnInput($event.target.value)" ..>
//and
OnInput(value:any)
{
//..make something more...
console.log(value)
//finally you call to the function
this._onChange(value)
}
更新简要说明
假设您有一个 customForm 组件<myComponent [formControl]="control">
或<myComponent [(ngModel)]="variable">
. Angular 如何知道会改变 formControl 或变量的值?:当您在自定义组件中调用函数 _onChange 时。
你可以例如写一些喜欢
<input #passwordInput
type="password"
[id]="id"
class="form-control"
[disabled]="disabled"
(blur)="_onChange($event.target.value);_onTouched()"
>
在您的应用程序中,您会看到只有在“模糊”输入时才更改 formControl 或变量的值。这就是如果我们有一个输入,我们通常使用事件的原因(input)
——最好使用事件(keyup)。我们对 Angular 说,输入中的每次更改都会将值发送到应用程序。
另一个例子,假设你的自定义组件挡道了
<button>option 1</button>
<button>option 2</button>
<button>option 3</button>
是的,我知道这三个按钮是一个非常愚蠢的自定义组件,它只是一个例如
我们可以在每个按钮的(点击)中调用函数_onChange,并使用不同的值
<button (click)="_onChange(1)">option 1</button>
<button (click)="_onChange(2)">option 2</button>
<button (click)="_onChange(3)">option 3</button>
推荐阅读
- python - 创建模块,然后导入该模块
- c# - 如何使这个输出文件从数据网格视图到.xls文件的读写模式?目前它产生只读文件
- git - 我可以使用 pip 从私有 VSTS 存储库安装包吗?
- php - 如何使用 IFTTT 向公共 PHP url 发出 Web 请求
- android - 执行 getprop ro.build.version.release 等大多数命令时,ADB 不断崩溃
- javascript - 单击重新加载图标或单击 F5?重定向到另一个页面
- c - 指针运算出错
- java - RecyclerView 中的数据没有从 Fragment 传递到 Adapter
- python - 如何在不下载的情况下从 irawler 获取找到的 url 的数量
- java - 如何在 Java 9+ 中使用 JFileChooser 显示网络共享?