如何将一种类型的 Observable 转换为另一种类型的 Observable
How to turn an Observable of a type into an Observable of another type
我有一个 Angular 应用程序使用 NGRX 来管理应用程序状态。
我有一个选择器 return 我是一个 Observable。
export const mySelector = createSelector(state, (state: IState) => state.field.array);
Observable returned 具有以下格式:{name:string; age:number}[]
我需要做的是将该数据格式转换为另一种数据格式,例如{firt-name:string}
。
我不明白我应该使用什么运算符。
我的目标是将新数据分配给订阅内的一个变量,如下所示:
myVariable: {firt-name:string};
this.store.pipe(select(mySelector))
.pipe(//here I should transform the data format)
.subscribe(result => {myVariable = result})
您可以使用 map
:
function mapper(data: { name: string; age: number }[]) {
return data.map(({ name, age }) => ({
"first-name": name,
age
}));
}
this.store
.pipe(
select(mySelector),
map(mapper)
)
.subscribe(result => {
myVariable = result;
});
或在您的选择器中执行该转换:
function mapper(data: { name: string; age: number }[]) {
return data.map(({ name, age }) => ({
"first-name": name,
age
}));
}
this.store
.pipe(
select(
pipe(
mySelector,
mapper
)
)
)
.subscribe(result => {
myVariable = result;
});
我有一个 Angular 应用程序使用 NGRX 来管理应用程序状态。 我有一个选择器 return 我是一个 Observable。
export const mySelector = createSelector(state, (state: IState) => state.field.array);
Observable returned 具有以下格式:{name:string; age:number}[]
我需要做的是将该数据格式转换为另一种数据格式,例如{firt-name:string}
。
我不明白我应该使用什么运算符。
我的目标是将新数据分配给订阅内的一个变量,如下所示:
myVariable: {firt-name:string};
this.store.pipe(select(mySelector))
.pipe(//here I should transform the data format)
.subscribe(result => {myVariable = result})
您可以使用 map
:
function mapper(data: { name: string; age: number }[]) {
return data.map(({ name, age }) => ({
"first-name": name,
age
}));
}
this.store
.pipe(
select(mySelector),
map(mapper)
)
.subscribe(result => {
myVariable = result;
});
或在您的选择器中执行该转换:
function mapper(data: { name: string; age: number }[]) {
return data.map(({ name, age }) => ({
"first-name": name,
age
}));
}
this.store
.pipe(
select(
pipe(
mySelector,
mapper
)
)
)
.subscribe(result => {
myVariable = result;
});