Angular 当过滤器为空时,它返回空数组

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

我需要在angular项目的datatable中使用过滤器的帮助。过滤器工作正常,正在过滤表中的结果,但是如果我删除过滤器字段中的所有字母,它将返回一个空数据表,如果我只输入一个字母,它将用结果填充表

这是我的html:

<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)
      );
  }