在 ag-Grid 单元格编辑器中使用自定义指令时,在 writeValue() 之前调用焦点事件
focus event is getting called before writeValue() when using custom directive inside ag-Grid cell Editor
目标:使 ag-Grid 单元格可编辑为货币控件。
方法:
- 为货币创建了自定义指令。
- 创建了一个使用该货币指令的自定义单元格编辑器。
问题:
在正常情况下,在页面加载时,使用指令(实现 ControlValueAccessor)加载控件并调用 writeValue() 来初始化控件中的值。因此,我使用 writeValue() 显示带有货币 ($) 符号的值。当用户单击控件时,我通过在焦点事件中编写逻辑来显示没有货币符号的值。
现在,对于 ag-Grid,指令不会在页面加载时加载。它会在单击控件时加载,因为它包含在单元格编辑器中。因此,在 click/focus 上,将按以下顺序调用以下内容 -
- focus 事件 - 它会将控件值设置为 null,因为尚未使用 writeValue 设置任何值。但不久之后,调用了 writeValue()。
- writeValue() - 它将控件值设置为带有 $ 符号的值,这是我不想要的。我想要没有 $ 符号的价值,重点。
那么,如何在指令的焦点事件之前调用 writeValue() 呢?
注意:顺便说一句,单元格编辑器的 2 次单击功能工作正常,但我想要 1 次单击解决方案,因为我已将焦点设置在 afterGuiAttached()
.
我能够通过使用 setTimeout
:
找到解决方案
public afterGuiAttached(): void {
// Set focus after the value has been written into the control
setTimeout(() => {
this.input.nativeElement.focus();
});
}
找不到更好的解决方案。如果你们知道或找到更好的解决方案,请告诉我。谢谢
目标:使 ag-Grid 单元格可编辑为货币控件。
方法:
- 为货币创建了自定义指令。
- 创建了一个使用该货币指令的自定义单元格编辑器。
问题:
在正常情况下,在页面加载时,使用指令(实现 ControlValueAccessor)加载控件并调用 writeValue() 来初始化控件中的值。因此,我使用 writeValue() 显示带有货币 ($) 符号的值。当用户单击控件时,我通过在焦点事件中编写逻辑来显示没有货币符号的值。
现在,对于 ag-Grid,指令不会在页面加载时加载。它会在单击控件时加载,因为它包含在单元格编辑器中。因此,在 click/focus 上,将按以下顺序调用以下内容 -
- focus 事件 - 它会将控件值设置为 null,因为尚未使用 writeValue 设置任何值。但不久之后,调用了 writeValue()。
- writeValue() - 它将控件值设置为带有 $ 符号的值,这是我不想要的。我想要没有 $ 符号的价值,重点。
那么,如何在指令的焦点事件之前调用 writeValue() 呢?
注意:顺便说一句,单元格编辑器的 2 次单击功能工作正常,但我想要 1 次单击解决方案,因为我已将焦点设置在 afterGuiAttached()
.
我能够通过使用 setTimeout
:
public afterGuiAttached(): void {
// Set focus after the value has been written into the control
setTimeout(() => {
this.input.nativeElement.focus();
});
}
找不到更好的解决方案。如果你们知道或找到更好的解决方案,请告诉我。谢谢