我的 HTML 中有一个输入字段,如下所示:
<input (keyup)="userInput($event)" type="text">
在我的组件中,我接受用户输入并与后端检查它是否是有效输入。在进行此调用之前,我对变量进行了简单的空检查。
userInput(e: any): void {
this.userInputText = e.target.value;
if (this.userInputText === '') { //Empty string check
this.validInput = false;
} else { // Check backend for availability
this.userInput.next(this.userInputText);
}
}
我的用户输入主题是
this.userInput
.debounceTime(1000)
.switchMap((val) => {
return this.checkValidity(val); //service call
}).subscribe((res) => {
this.validInput = res.status;
}, (err) => {
ResponseHandler(err);
});
问题是我做的空支票。
想象一下用户输入两个字符“of”,我将其显示为有效(通过拨打电话)。
如果用户点击退格键(输入现在是“o”),请等待一秒钟(导致调用文本“o”)并按退格键删除“o”(导致用户输入为空)我的状态显示无效导致输入字段为空。
然后 ajax 调用响应返回(对于文本 'o',这是有效的)并且我显示有效。所以我最终显示对空字符串有效。我该如何解决这个问题?有任何想法吗?