如何使用 ngrx 将一个可观察数组投影到另一个数组?
How can I project one observable array to another with ngrx?
我有一个组件
export class Test implements OnInit {
public items: Observable<Item[]>
constructor(private store: Store<IAppState>)
ngOnInit: void {
this.items = this.store.pipe(select(selectItems));
}
}
我的商品是
export interface Item {
timestamp: Date
}
我想将 timestamp
从 utc 转换为本地。所以我想做类似的事情:
export class Test implements OnInit {
public items: Observable<Item[]>
constructor(private store: Store<IAppState>)
ngOnInit: void {
this.items = this.store.pipe(select(selectItems).select(x => new Item { timestamp = new Date(x.timestamp + " UTC") }));
}
}
以上语法不是真实的(它基于 C# LINQ)。我正在尝试
export class Test implements OnInit {
public items: Observable<Item[]>
constructor(private store: Store<IAppState>)
ngOnInit: void {
this.items = this.store.pipe(map(state => selectItems(state), // something here...));
}
}
我卡在了 // something here
部分。
C# LINQ select() 的等价物是 Array.map()
因此,假设您的 selectItems 函数 returns 是一个数组,您可以将 selected 项目“映射”到 Items:
constructor(private store: Store<IAppState>) {}
public ngOnInit: void {
this.items = this.store.pipe(map(state => {
const selectedItems = selectItems(state);
return selectedItems.map(x => new Item(...));
}));
}
我有一个组件
export class Test implements OnInit {
public items: Observable<Item[]>
constructor(private store: Store<IAppState>)
ngOnInit: void {
this.items = this.store.pipe(select(selectItems));
}
}
我的商品是
export interface Item {
timestamp: Date
}
我想将 timestamp
从 utc 转换为本地。所以我想做类似的事情:
export class Test implements OnInit {
public items: Observable<Item[]>
constructor(private store: Store<IAppState>)
ngOnInit: void {
this.items = this.store.pipe(select(selectItems).select(x => new Item { timestamp = new Date(x.timestamp + " UTC") }));
}
}
以上语法不是真实的(它基于 C# LINQ)。我正在尝试
export class Test implements OnInit {
public items: Observable<Item[]>
constructor(private store: Store<IAppState>)
ngOnInit: void {
this.items = this.store.pipe(map(state => selectItems(state), // something here...));
}
}
我卡在了 // something here
部分。
C# LINQ select() 的等价物是 Array.map()
因此,假设您的 selectItems 函数 returns 是一个数组,您可以将 selected 项目“映射”到 Items:
constructor(private store: Store<IAppState>) {}
public ngOnInit: void {
this.items = this.store.pipe(map(state => {
const selectedItems = selectItems(state);
return selectedItems.map(x => new Item(...));
}));
}