在Oservable中获取项目

时间:2017-10-18 12:49:42

标签: angular ngrx

我使用角度4,我发现了Observable概念......

我有这个对象。

JQuery

我希望找到一个对象,其属性名称为myobjects: Observable<MyObject[]>; object.name == 'titi'而非return MyObject ...

Observable

有可能吗? 我找不到.. 我不明白:(

2 个答案:

答案 0 :(得分:3)

处理流时,如果可能,应避免产生副作用。不应该将其重新分配给类变量,而应该采用Observable模式并执行:

const selectedPers$ = this.personArray$
  .map(arr => arr.find(pers => pers.name === 'titi'))
  .filter(pers => !!pers);

然后在您的视图中使用异步管道:

<p>The selected person is {{ selectedPers$ | async | json }}</p>

如果您想显示您可能会做的人的姓名和年龄:

<div *ngIf="selectedPers$ | async as selectedPers">
  <p>Person's name is: {{ selectedPers.name }}</p>
  <p>Person's age is: {{ selectedPers.age }}</p>
</div>

这样,每次personArray$发出新值时,都会更新所选的人。

答案 1 :(得分:1)

你所要做的就是在这个Observable中订阅并获取数组然后过滤数组以获取你想要的值,然后将其值放在你的对象中。

这是一个简单的解决方案:

myobjects: Observable<MyObject[]>;
let toto: MyObject; 
this.myobjects.subscribe( result => 
      let newArray = result.filter(object => object.name === 'titi');
      if(newArray.length === 1 ) 
         this.toto = newArray[0];
);

希望它可以帮到你:)