我正在尝试使用以下方法迭代 RxJS 存储状态的 Observable:
ngOnInit() {
this.route.params
.subscribe(
(params: Params) => {
this.index = +params['propertyId'];
this.propertyState = this.store.select('propertyState');
if (Number.isInteger(this.index)) {
this.store.dispatch(new fromPropertyAction.SelectProperty(this.index));
}
}
);
}
HTML:*ngFor="让 (propertyState | async).properties 的属性;让 i = index" (click)="onSelectProperty(i)"
并且还尝试过:
ngOnInit() {
this.route.params
.subscribe(
(params: Params) => {
this.index = +params['propertyId'];
this.store.select('propertyState').subscribe(data => {
this.properties = data.properties;
})
if (Number.isInteger(this.index)) {
this.store.dispatch(new fromPropertyAction.SelectProperty(this.index));
}
}
);
}
HTML: *ngFor="让属性的属性;让 i = 索引"
但是这两种情况我都会收到这个错误。
找不到“object”类型的不同支持对象“[object Object]”。NgFor 仅支持绑定到 Iterables,例如 Arrays。
另外,这里的 store 是在 type 的构造函数中声明的: private store: Store
fromApp.AppState 在 app reducer 中:
export interface AppState {
propertyState: fromPropertyReducer.State
}
fromPropertyReducer.State 在属性 reducer 中:
export interface State {
properties: Property[];
selectedProperty: Property;
selectedPropertyIndex: number;
openAllProperties: boolean;
selectedPropertyExpenseIndex: number;
}
此外,最初属性在遍历数组的 html 中显示得很好。但是在向 property.expenses 数组添加新费用的操作之后,是否会发生此错误。这就是我在减速器中添加新费用的方式:
case PropertyListActions.ADD_PROPERTY_EXPENSE:
let property = state.properties[state.selectedPropertyIndex];
const updatedExpenses = [
...property.expenses,
action.payload
];
const updatedProperty = {
...property,
expenses: updatedExpenses
};
const updatedProperties = {
...state.properties,
};
updatedProperties[state.selectedPropertyIndex] = updatedProperty;
return {
...state,
properties: updatedProperties
}
我看了别人的帖子,所以尝试了第二种方法,但没有奏效。请帮忙。谢谢你。