属性 'Price' 在类型 'Observable<wishlist[]> ngrx 上不存在
Property 'Price' does not exist on type 'Observable<wishlist[]> ngrx
我正在尝试显示具有名称和价格的初始愿望清单状态 属性。我收到“属性 'Price' does not exist on type 'Observable”错误,但 Price 确实存在于 wishlist 界面和 reducer 中。
我稍后会从我的产品列表中将一个产品添加到心愿单,但我想先让初始状态正常工作。
也许我在 html 中显示错误?错误地使用 for 循环。我不确定。
感谢任何帮助。
这里是心愿单界面
export interface wishlist{
name: string;
Price: string;
}
动作
import { Injectable } from '@angular/core'
import { Action } from '@ngrx/store'
import { wishlist } from 'model/wishlist.model'
export const ADD_WISHLIST = '[WISHLIST] Add'
export const REMOVE_WISHLIST = '[WISHLIST] Remove'
export class AddWishlist implements Action{
readonly type = ADD_WISHLIST
//creating a class for each of the actions
constructor(public payload: wishlist) {}
}
export class RemoveWishlist implements Action{
readonly type = REMOVE_WISHLIST
//creating a class for each of the actions
constructor(public payload: number) {}
}
export type Actions = AddWishlist | RemoveWishlist
减速机
import { Action, ActionsSubject } from '@ngrx/store'
import { wishlist } from 'model/wishlist.model'
//import { n } from 'node:inspector'
import * as WishlistActions from 'src/app/actions/wishlist.actions'
const initialState: wishlist ={
name: 'insital wishlist',
Price: '400'
}
export function wishlistreducer(state : wishlist[] = [initialState], action: WishlistActions.Actions){
switch(action.type){
case WishlistActions.ADD_WISHLIST:
return [...state, action.payload];
default:
return state;
}
}
应用状态
import { wishlist } from 'model/wishlist.model';
export interface AppState{
readonly WishList: wishlist[];
}`
愿望清单html(这叫做购物车,但我将其用作愿望清单)
<div class="right">
<h3>Wishlist</h3>
<ul>
<li *ngFor ="let wishlist of wishlists | async"></li>
<a>{{ wishlists.Price }}</a>
</ul>
</div>
愿望清单component.ts(它叫做购物车,不介意)
import { Observable } from 'rxjs';
import { Store } from '@ngrx/store';
import { wishlist } from 'model/wishlist.model';
import { AppState } from 'src/app/app.state';
@Component({
selector: 'app-cart',
templateUrl: './cart.component.html',
styleUrls: ['./cart.component.css']
})
export class CartComponent implements OnInit {
wishlists: Observable<wishlist[]>;
constructor( private store: Store<AppState>) {
this.wishlists = store.select('WishList')
}
ngOnInit(): void {
}
}
为了详细说明我的评论,您错误地使用了循环。 *ngFor 循环正在解包您的数组并将每个值(迭代)分配给变量“wishlist”。因此,您需要在访问 属性 价格时使用此变量。目前您正在尝试访问从您的商店返回的可观察对象上的 属性 Price
。
<ul>
<li *ngFor ="let wishlist of wishlists | async">
<a>{{ wishlist.Price }}</a>
</li>
</ul>
我正在尝试显示具有名称和价格的初始愿望清单状态 属性。我收到“属性 'Price' does not exist on type 'Observable
我稍后会从我的产品列表中将一个产品添加到心愿单,但我想先让初始状态正常工作。
也许我在 html 中显示错误?错误地使用 for 循环。我不确定。
感谢任何帮助。
这里是心愿单界面
export interface wishlist{
name: string;
Price: string;
}
动作
import { Injectable } from '@angular/core'
import { Action } from '@ngrx/store'
import { wishlist } from 'model/wishlist.model'
export const ADD_WISHLIST = '[WISHLIST] Add'
export const REMOVE_WISHLIST = '[WISHLIST] Remove'
export class AddWishlist implements Action{
readonly type = ADD_WISHLIST
//creating a class for each of the actions
constructor(public payload: wishlist) {}
}
export class RemoveWishlist implements Action{
readonly type = REMOVE_WISHLIST
//creating a class for each of the actions
constructor(public payload: number) {}
}
export type Actions = AddWishlist | RemoveWishlist
减速机
import { Action, ActionsSubject } from '@ngrx/store'
import { wishlist } from 'model/wishlist.model'
//import { n } from 'node:inspector'
import * as WishlistActions from 'src/app/actions/wishlist.actions'
const initialState: wishlist ={
name: 'insital wishlist',
Price: '400'
}
export function wishlistreducer(state : wishlist[] = [initialState], action: WishlistActions.Actions){
switch(action.type){
case WishlistActions.ADD_WISHLIST:
return [...state, action.payload];
default:
return state;
}
}
应用状态
import { wishlist } from 'model/wishlist.model';
export interface AppState{
readonly WishList: wishlist[];
}`
愿望清单html(这叫做购物车,但我将其用作愿望清单)
<div class="right">
<h3>Wishlist</h3>
<ul>
<li *ngFor ="let wishlist of wishlists | async"></li>
<a>{{ wishlists.Price }}</a>
</ul>
</div>
愿望清单component.ts(它叫做购物车,不介意)
import { Observable } from 'rxjs';
import { Store } from '@ngrx/store';
import { wishlist } from 'model/wishlist.model';
import { AppState } from 'src/app/app.state';
@Component({
selector: 'app-cart',
templateUrl: './cart.component.html',
styleUrls: ['./cart.component.css']
})
export class CartComponent implements OnInit {
wishlists: Observable<wishlist[]>;
constructor( private store: Store<AppState>) {
this.wishlists = store.select('WishList')
}
ngOnInit(): void {
}
}
为了详细说明我的评论,您错误地使用了循环。 *ngFor 循环正在解包您的数组并将每个值(迭代)分配给变量“wishlist”。因此,您需要在访问 属性 价格时使用此变量。目前您正在尝试访问从您的商店返回的可观察对象上的 属性 Price
。
<ul>
<li *ngFor ="let wishlist of wishlists | async">
<a>{{ wishlist.Price }}</a>
</li>
</ul>