Angular2 RxJs:来自http的简单take()返回observable

时间:2016-09-21 11:50:10

标签: angular rxjs

我只是从http返回的observable中尝试err = p.SetTLVField(tag, length, []byte(value)) if err != nil { fmt.Println("Set TLV failed") return 0, err }

.take(5)

并在HTML中使用它:

this.dataObservable = this._service.getData()
                                   .take(5);

这很有效。但我得到全部记录,我只想要5.我做错了什么?感谢。

在_service中我返回http observable:

<tr *ngFor="let record of dataObservable | async">

1 个答案:

答案 0 :(得分:4)

.take(5)将使用您的Observable的5个发射,而不是包含数据的5个元素。

您应该在.map函数中将其限制为5。

.subscribe到该observable并在该函数中,您将限制传入数据存储在一个局部变量中,该变量将绑定到您的模板。

getData(): Observable<any[]> { // returns an array, right??
  url = '/getData';
  this._data = this._http.get(url)
    .map(response => this.extractData(response));
  return this._data;
}

//在您的组件中

this.yourService.getData().subscribe(
   dataArray => this.data = dataArray.slice(0, 5),
   err => console.log(err)
);

this.data将绑定到您的模板。