我试图通过使用:
迭代RxJS存储状态的ObservablengOnInit() {
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 =“let property of property property | async).properties; let i = index” (点击)= “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 =“let property of properties; let i = index”
但两种情况我都会收到此错误。
无法找到'object'类型的不同支持对象'[object Object]'。 NgFor仅支持绑定到Iterables,例如Arrays。
此外,这里的store在类型为: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数组添加新开销的操作之后,是否会发生此错误。这就是我在reducer中添加新费用的方法:
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
}
我查看了其他人的帖子,所以尝试了第二种方法,但没有奏效。请帮忙。谢谢。
答案 0 :(得分:0)
谢谢大家的帮助!我只是想到你已经建议我的propertyState.properties需要是一个数组。由于在发出操作后发生错误,我发现错误在reducer中。 updatedProperties应该是一个数组,之前我把它作为一个对象。再次感谢你的帮助!我非常感激。