我目前正在使用 HostListener 以便能够在用户输入文本的同时格式化用户文本。例如,如果用户正在输入电话号码,我希望能够根据需要添加格式。如果字符串是 0000,我希望文本是 000-0,如果文本是 0000000000,那么“(801) 123 - 1234”。我有这样做的逻辑,但我目前正在使用主机侦听器来执行此操作。
@HostListener("textChange")
public onTextChange(target): void {
this.el.text = this.phoneFormatPipe.transform(this.el.text)
}
这有效,但它会一直调用自己,直到达到最大堆栈调用限制。这显然太慢了,所以我的问题是:如何在不触发 textChange 事件的情况下修改元素内的文本?还是有另一种方法来实现这一目标?
提前致谢!快乐编码!
有更好的方法来做你正在做的事情,但我不确定是否有更好的方法。来自 iOS 开发,我知道肯定有一个更合适的地方来做这种操作,但在这里做不应该导致你达到最大堆栈。
如果您更新源代码来执行此操作,您将避免最大堆栈限制(并显着提高应用程序的性能)。这不是最好的方法,但它是我目前在 NativeScript 中发现的最好的方法。
@HostListener("textChange")
public onTextChange(target): void {
let newText: string = this.phoneFormatPipe.transform(this.el.text);
if (this.el.text !== newText) {
this.el.text = newText;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句