angular - Angular 5 自动完成功能不适用于第一次通话
问题描述
我正在使用ng5-auto-complete库在角度 5 中自动完成。
当我输入一个字符时,API 调用会获取要显示的建议并将其设置为数组。
onChanges():void {
this.newPLApplication.get('pLApplicationDetails').get('applicantOccupationDetailsDTO').get('companyName')
.valueChanges
.subscribe(
term => {
if (term != '') {
console.log('got output yo');
this.nPLApplication.getCompanyListByLetters(term)
.subscribe((value: any) => {
if (value.data!=null)
this.setList(value.data);
});
}
})
}
setList 函数设置要在建议中显示的列表。
我希望每当我输入一个字符时,它都会从 api 获取结果并将它们显示在列表中。但问题是第一个字符没有出现列表。当输入更多字符时它工作正常。
例如:当我重新加载页面并输入“a”时,它显示“未找到记录”。当我继续输入“aa”时,它会向我显示来自 api 的建议。现在,当我按下退格键时,输入再次变为“a”,这一次会显示建议。
这是我在 html 中的代码:
<input class="form-control" type="text"
formControlName="companyName"
(blur)="onBlur($event)"
id="list"
[ng5-auto-complete]="list"
no-record-text="No Records Found!" />
我也尝试过添加去抖动时间,但它仍然以相同的方式工作。如何在输入第一个字符时完成这项工作?
更多信息:
getCompanyListByLetters(letters: string): Observable<any[]> {
return this.http.get(environment.prodURL + 'v2/company/search/' + letters, this.requestOptions)
.map((response: Response) => {
let responseObject = response.json();
if (responseObject.status == "success" || responseObject.status == "failure") {
return (
responseObject.length != 0 ? responseObject as any[] : [{ "BookName": "No Record Found" } as any]
);
}
else {
throw new Error('Something went wrong ..!!');
}
});
}
解决方案
推荐阅读
- python-3.x - 设置标题栏的字体
- scheme - DrRacket 中的计划合同违规
- java - 如何添加编译标志VSCode
- powershell - 通过 UNIX Python 设置 ADUser
- omnet++ - OMNET++ 的 Openflow 扩展
- go - 使用 Go 向 APNS 发出推送请求时出现 403 禁止错误。我是否正确创建了 JWT?
- mysql - 需要从 MySQL JOIN 查询中返回单个但得到多个
- snowflake-cloud-data-platform - 物化视图:授予架构上的所有权限
- micronaut - Micronaut 数据:没有为存储库配置支持 RepositoryOperations
- c# - 发布为 Windows 服务后,在 .net core 3.0 worker 服务上获取 appsettings.json 值