如何 return 另一个可观察对象中的可观察方法 Angular 7
How to return an observable method in another observable Angular 7
在组件服务中 class 使用 angular7 覆盖基本服务 get 方法。如果需要映射数据,我想要 return 映射数据,否则 return 原始数据。这是我的功能:
read(isSelectable:boolean): Observable<IFailureMode> {
const observable = new Observable<IFailureMode>(subscriber => {
if (isSelectable) {
return super.read(filter).subscribe(data=>mapToSelectableModel(data));// Here want to return mapped data
} else {
return super.read(filter);//Here want to return origin data
}
});
return observable;
}
如何return super.read(过滤)作为observable.next?有没有更好用的方法呢?
正确答案
如果您只想根据提供的参数将映射应用到 super.read
,应该这样做:
read(isSelectable) {
return super.read(filter)
.pipe(map(data => isSelectable ? mapToSelectableModel(data) : data));
}
原答案(不正确)
如果我正确理解你的问题,这将是适合你的方法:
read(fitler) {
return of(filter)
.pipe(
map(f => {
if (f.key === 'isSelectable' && f.value === 'true') {
return super.read(f).pipe(map(data => mapToSelectableModel(data));
} else {
return super.read(f);
}
})
);
}
在这种情况下,super
调用将有条件地映射
在组件服务中 class 使用 angular7 覆盖基本服务 get 方法。如果需要映射数据,我想要 return 映射数据,否则 return 原始数据。这是我的功能:
read(isSelectable:boolean): Observable<IFailureMode> {
const observable = new Observable<IFailureMode>(subscriber => {
if (isSelectable) {
return super.read(filter).subscribe(data=>mapToSelectableModel(data));// Here want to return mapped data
} else {
return super.read(filter);//Here want to return origin data
}
});
return observable;
}
如何return super.read(过滤)作为observable.next?有没有更好用的方法呢?
正确答案
如果您只想根据提供的参数将映射应用到 super.read
,应该这样做:
read(isSelectable) {
return super.read(filter)
.pipe(map(data => isSelectable ? mapToSelectableModel(data) : data));
}
原答案(不正确)
如果我正确理解你的问题,这将是适合你的方法:
read(fitler) {
return of(filter)
.pipe(
map(f => {
if (f.key === 'isSelectable' && f.value === 'true') {
return super.read(f).pipe(map(data => mapToSelectableModel(data));
} else {
return super.read(f);
}
})
);
}
在这种情况下,super
调用将有条件地映射