如何解决Angular2:获取从数组“ |”中选择单个对象的管道
我在Angular中有一个复杂的可观察对象(由秋田提供,我无法更改),它是|
版本的Dinosaur
对象数组的可观察对象,或单个Dinosaur
对象,或未定义:
import { QueryEntity } from "@datorama/akita";
export class DinosaurQuery extends QueryEntity<DinosaurState,Dinosaur> {
activeDinosaurs$ = this.selectActive(); // Type: Observable<Dinosaur[]> | Observable<Dinosaur | undefined>
constructor(protected store: DinosauRSStore) {
super(store);
}
}
作为一个观察对象,我想从中得到的是单个对象,或者是数组中的第一个对象。或未定义(如果没有)。
export class DinosaurSelection {
// I want singleSelectedDinosaur$ to be of type: Observable<Dinosaur | undefined>
singleSelectedDinosaur$ = this.dinosaurQuery.activeDinosaurs$.pipe(???);
constructor(protected dinosaurQuery: DinosaurQuery) {}
}
我想必须有一些管道可以执行此操作,但是我找不到可以同时作用于对象的|
和该对象的数组的适当内容。 (或者也许不能用管道来完成,但是换一种方式也可以。)
解决方法
只需使用“ pipe(map)”来转换数组是否为数组
singleSelectedDinosaur$ = this.dinosaurQuery.activeDinosaurs$.pipe(
map((res:any)=>{
if (res && Array.isArray(res)) //if res and is array
return res[0] //return the first element
return res; //else resut res
}
));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。