Javascript 按关键字筛选数组在角度模式下不起作用

Javascript 按关键字筛选数组在角度模式下不起作用,javascript,angular,Javascript,Angular,我创建了一个角度过滤器组件来过滤数组并打印其内容。我通过服务从另一个组件获取关键字作为筛选器数组的值。在html中,显示值和整个数组,但不显示过滤器数组 下面是我的代码: result.component.ts result.component.html 仅显示{{value}},而不显示{{item}。如何解决这个问题?您在ngOnInit上一个接一个地调用this.getPosts和this.showData this.getPosts是一个异步调用,因此在获取this.getPosts的结

我创建了一个角度过滤器组件来过滤数组并打印其内容。我通过服务从另一个组件获取关键字作为筛选器数组的值。在html中,显示值和整个数组,但不显示过滤器数组

下面是我的代码:

result.component.ts

result.component.html


仅显示{{value}},而不显示{{item}。如何解决这个问题?

您在ngOnInit上一个接一个地调用this.getPosts和this.showData

this.getPosts是一个异步调用,因此在获取this.getPosts的结果之前,将运行this.showData。因此,无需过滤:

解决方法是将this.showData放在this.getPosts的成功回调中。因此,只有在get方法成功完成并且有一些数据要过滤时,才会调用showData:

像这样的

getPosts(): void{
  this.http.get<JsoncallItem[]>(this.postsURL).
  subscribe(
      resultArray => {this._postsArray = resultArray['data'];
      this.showData();
   })
  }
并从ngOnInit中删除此.showData


希望这有帮助。

现在它显示结果,但不过滤,它显示整个阵列!如果this.value有值,请签入this.showData。可能它是空的,这就是为什么它会显示所有结果,因为您也会使用订阅初始化它,而此时它可能不会被填充。请尝试在constructor上执行this.data.currentValue.subscribevalue=>this.value=value这一行。
<p>{{value}}</p>
<table">
    <tr *ngFor="let item of filterarray">
        <td>{{item}}</td>
    </tr>
</table>
getPosts(): void{
  this.http.get<JsoncallItem[]>(this.postsURL).
  subscribe(
      resultArray => {this._postsArray = resultArray['data'];
      this.showData();
   })
  }