2

我正在尝试使用以下方法迭代 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    
        }

我看了别人的帖子,所以尝试了第二种方法,但没有奏效。请帮忙。谢谢你。

4

1 回答 1

0

谢谢你们每一个人的帮助!我只是按照您建议我的 propertyState.properties 需要是一个数组的想法才弄清楚的。由于错误发生在发出操作之后,我发现错误在减速器中。updatedProperties 应该是一个数组,我之前将它作为一个对象。再次感谢你的帮助!我非常感激。

于 2018-02-14T02:39:03.487 回答