arrays - 使用外部 JSON 文件而不是 .TS 文件进行预输入
问题描述
我让 Typeahead 使用 Angular 8 和 ng-bootstrap 工作。但是,我希望 empId 来自 JSON 文件,因为有超过 10,000 个条目。目前,我有这个:
<input type="text" [(ngModel)]="model" [ngbTypeahead]="search"/>
.TS 文件:
import {Component} from '@angular/core';
import {Observable} from 'rxjs';
import {debounceTime, distinctUntilChanged, map} from 'rxjs/operators';
const empId = ['643200','987900','043100','049400','189700','240800','617600','228700','188600','631200','695000','029500','626500','199700','619300','995300','123700','619400','230200','017300','237800'];
@Component({
selector: 'ngbd-typeahead-basic',
templateUrl: './typeahead-basic.html',
styles: [`.form-control { width: 300px; }`]
})
export class NgbdTypeaheadBasic {
public model: any;
search = (text$: Observable<string>) =>
text$.pipe(
debounceTime(200),
distinctUntilChanged(),
map(term => term.length < 2 ? []
: empId.filter(v => v.toLowerCase().indexOf(term.toLowerCase()) > -1).slice(0, 10))
)
}
仅供参考,JSON 文件位于../path/file.json
结构中某个位置的同一服务器中:
[
{
"empId": "643200"
},
{
"empId": "987900"
},
{
"empId": "043100"
},
{
"empId": "049400"
},
{
"empId": "189700"
}
]
同样,PS:JSON 文件中的 empId 有超过 10,000 多个条目。这只是一个例子。
解决方案
推荐阅读
- ubuntu - sam local start-api go lambda 在 linux ubuntu 上返回 502“内部服务器错误”
- flutter - 如何在flutter中使用继承的小部件更新第二个时刷新旧屏幕
- r - RSelenium没有打开浏览器
- javascript - 避免在结果中获取 id 数组(mssql - node.js)
- postgresql - 修改现有查询
- oracle-cloud-infrastructure - 有没有简单的方法可以删除 Oracle 云基础设施隔间中的所有资源?
- javascript - 未定义不是对象(评估“state.markers”)
- java - OpenJDK和Oracle JDK之间computeIfAbsent的语义差异
- javascript - How to set the image search box to 'None' or 'Off'?
- javascript - 如果搜索不匹配如何隐藏表格?