Angular 当过滤器为空时,它返回空数组
我需要在angular项目的datatable中使用过滤器的帮助。过滤器工作正常,正在过滤表中的结果,但是如果我删除过滤器字段中的所有字母,它将返回一个空数据表,如果我只输入一个字母,它将用结果填充表 这是我的html:Angular 当过滤器为空时,它返回空数组,angular,typescript,datatable,angular-material,angular-material-table,Angular,Typescript,Datatable,Angular Material,Angular Material Table,我需要在angular项目的datatable中使用过滤器的帮助。过滤器工作正常,正在过滤表中的结果,但是如果我删除过滤器字段中的所有字母,它将返回一个空数据表,如果我只输入一个字母,它将用结果填充表 这是我的html: <mat-form-field> <mat-label>Search</mat-label> <input matInput (keyup)="applyFilter($event)&q
<mat-form-field>
<mat-label>Search</mat-label>
<input
matInput
(keyup)="applyFilter($event)"
placeholder="Search"
#input
/>
</mat-form-field>
和我的数据源:
searchResults(name: string) {
this.appService.searchPatient(name).subscribe((data: any) => {
if (data) {
this.totalPatientsCountSubject.next(data);
this.patientsSubject.next(data);
console.log(data);
}
});
}
我的服务。ts:
public searchPatient(name: string) {
return this._httpClient
.get(`http://api.dentist.techup.me/patient/search/by/name?name=${name}`)
.pipe(
map((data: any) => {
return data.result;
}),
catchError(this._handleError)
);
}
任何帮助都将不胜感激!
提前谢谢 好的,看看服务方法的名称/search/by/name我几乎100%确定这不是“将列表减少到匹配条目”意义上的过滤器,但它是一种类似于“将所有匹配条目递给我…”的搜索方法 总而言之:当你什么都不输入时,得到一个空的列表似乎是完全可以的。此方法仅返回输入字符串的匹配项。当没有可用于搜索的字符串时,它不会返回任何内容
也许您可以访问一些关于API的文档。必须有另一种方法来收集所有条目的完整未筛选列表。请提供方法
AppService.searchPatient()
。编辑了主文档。但这里只是以防万一:`public searchPatient(name:string){返回这个。\u httpClient.get(http://api.dentist.techup.me/patient/search/by/name?name=${name}
).pipe(映射((数据:any)=>{return data.result;}),catchError(this._handleError));}`如果您尝试加载http://api.dentist.techup.me/patient/search/by/name?name=
?我猜使用您的API时会出现一些错误,因为它试图搜索一个没有返回值的空名称。是的,有另一个端点可以获取所有条目。这是/patient/list的POST方法。这里是一个例子。我肯定应该使用另一个端点,但仍然无法过滤数据。好的,只是为了确定。当您更改API调用并获取要在本地筛选的患者的完整列表时,是否正确?
public searchPatient(name: string) {
return this._httpClient
.get(`http://api.dentist.techup.me/patient/search/by/name?name=${name}`)
.pipe(
map((data: any) => {
return data.result;
}),
catchError(this._handleError)
);
}