如何检查所有HTTP get请求已完成(已解决) - Angular 2

时间:2016-05-12 21:34:50

标签: typescript angular

我有一项服务:

getItems(id: string): Observable<items> {
  return this.http.get(this.url + id)
      .map(response => response.json());
}

在组件模板中:

<tr *ngFor="#item of items">
    <td>
        <another-component [values]=item.values></another-component>
    </td>
</tr>

在另一个组成部分:

ngOnChanges() {
    this.values.filter((value) => value.number > 0)
        .map((value) => this.positive[value.id] = value.number);
      }

有值列表和ID。我想在展示它们之前分开积极的一面。

我收到错误声明.filter无法用于未定义。之后,我使用ngIf来检查属性是否存在它是否有效,但它只显示了一些值(已解决)。

所以,

如何以更恰当的方式检查所有请求是否已完成并且所有数据已准备好(已解决)?

或者我可以异步解决的问题是什么?

修改

我在我的组件中使用订阅。

ngOnInit() {
    let id = this._routeParams.get('id');
    this.getItems(id)
}
this._itemsService.getItems(id).subscribe(
        data => this.items = data
        )

但并非所有值都出现在其他组件中,因为它未完成。如何让其他组件知道它已完成,然后它可以过滤完整列表。由于它是在成功时过滤而不是完成,因此仅应用过滤器中的一个或两个值,仅出现一个或两个值。

1 个答案:

答案 0 :(得分:1)

尝试

map().subscribe()

来源:Angular2 http.get() ,map(), subscribe() and observable pattern - basic understanding

语法:

.subscribe(success, failure, complete);

示例:

.subscribe(
    function(response) { console.log("Success Response" + response)},
    function(error) { console.log("Error happened" + error)},
    function() { console.log("the subscription is completed")}
);