带有Angular的Ionic中的移动设备上的自动完成不过滤

问题描述

我有一个带有自动完成功能的表单,它在本地运行得很好,但是当我将其编译为pwa时,它并没有过滤数据。 该API运作良好,并返回数据json数组响应

     var normalize = function (term) {
          var ret = "";
          for (var i = 0; i < term.length; i++) {
            ret += accentMap[term.charat(i)] || term.charat(i);
          }
          return ret;
        };

 search(Objobs: { Objobs?: any; id?: any; },filter: { name: string } = { name: '' },page = 1): Observable<IUserResponse> {

     return this.http.get<IUserResponse>('https://tutututu.com/agriobs-codeigniter/index.PHP/structure/get_area/17' ).pipe(
          tap((response: IUserResponse) => {
            response.results = response.results
              
           // Not filtering on mobile device (Android,Ios) ! 
              .map(user => new User(user.id_commune,user.nom_commune))
              .filter(user => normalize(user.nom_commune.toLowerCase()).includes(filter.name))
    
               return response;
               //console.log(response); 
          })
        )
}

解决方法

您传递给tap的Lambda的返回值将被忽略,因为tap不会更改流中的值。另外,不清楚filter.name的来源。

我会将tap更改为map。可能看起来像这样:

return this.http.get<IUserResponse>('https://tutututu.com/agriobs-codeigniter/index.php/structure/get_area/17' ).pipe(
  map((response: IUserResponse) => {
    response.results = response.results
      .map(user => new User(user.id_commune,user.nom_commune))
      .filter(user => normalize(user.nom_commune.toLowerCase()).includes(filter.name))
    return response; 
  })  
);
,

对不起,这是一个变音符号自动完成转换问题!