Angular 2订阅了一个可观察数组的属性

时间:2017-04-19 00:58:59

标签: angular typescript rxjs

我正在尝试从一个可观察的对象数组中的一个对象中获取一个属性。除了隔离一个对象并获得各个属性之外,我可以获得所有内容。

以下是成功获取数组的服务方法:

getItems(): Observable<IItem[]> {
    return this.get(this.baseUrl + '/items')
      .map((res: Response) => <IItem[]>res.json())
      .do(data => console.log("Items: " + JSON.stringify(data)))
      .catch(this.handleError);
  }

尝试只获取一个对象无效:

 getItem(name: String): Observable<IItem> {
    return this.getItems()
      .map((items: IItem[]) => items.find(item => item.name === name))
      .do(item => console.log("Item: " + item)) 
      .catch(this.handleError);
  }

组件

this._itemsApi.getItem("test")
      .subscribe(
        item => this.testItem = item,
        error => this.errorMessage = <any>error);

模板

 <widget icon="file" [count]="testItem?.value">

JSON

["name: test, value: 1","name: test2, value: 0"]

2 个答案:

答案 0 :(得分:2)

试试这个。 LinQ for TypeScript。这将帮助您从对象数组中找到一个。 https://github.com/kutyel/linq.ts

按照它的文档,它包含你需要做的一切。

答案 1 :(得分:1)

你有一个字符串数组,而不是一个对象数组。 重新格式化API以返回对象数组 - &gt; [{“key”:“value1”},{“key”:“value2”}]。然后,您可以迭代这些对象并使用item.value来获取给定项的值。