У меня есть наблюдаемый массив в моем сервисе:
gearItems$: Observable<GearItem[]>;
Этот массив создается в конструкторе для целей тестирования:
constructor()
{
this.gearItems$ = of([
{ ID: 1, name: 'T-shirt', price: 10, sizes: [
{ size: Size.L, available: false , color: 'warn' }, ,
], inStock: true, images: [
{ ID: "1", name: "image1", size: 12, type: "type", url: "../../../assets/IMG_5585.JPG" },
{ ID: "123", name: "image2", size: 12, type: "type", url: "../../../assets/IMG_5904.JPG" }
]...)
}
Мне нужно обновить / добавить один элемент в этом массиве и вызвать выброс нового значения:
updateGearItem(gearItem: GearItem): Observable<GearItem>{
return this.gearItems$.pipe(
flatMap((gearItems: GearItem[]) => {
return gearItems.filter(gI => gI.ID !== gearItem.ID);
})
)
}
createGearItem(gearItem: GearItem): Observable<any>{
// create HTTP request to the backend to create a new item
return this.gearItems$.pipe(
map(gearItems => {
gearItems.push(gearItem)
return gearItems;
})
)
}
Однако я не могу этого сделать. В моем компоненте на ngOnInit у меня есть прослушивание подписки для наблюдаемого массива gearItems$: Observable<GearItem[]>;
:
ngOnInit() {
this.merchandiseService.fetchAllGearItems().subscribe(
(gearItems: GearItem[]) => this.gearItems = gearItems
);
}
Но всякий раз, когда я пытаюсь добавить или обновить элементы в наблюдаемом массиве, ничего не происходит. Что мне здесь не хватает?