是否有可能与来自NGXS状态的对象进行数据绑定?

问题描述

我最近将NGXS引入了我的项目。在大多数情况下,我对软件包都很满意。但是我面临一个相当烦人的问题。我有一个深层物体,其中许多属性都已绑定和更改:

export class AnalysisComponent implements OnInit {
  @Select(DeepObjectState) stateObservable$: Observable<DeepObjectStateModel>;
  public deepObject: DeepObjectViewModel;

  ngOnInit(): void {
    this.stateSubscription = this.stateObservable$.subscribe(state => {
      this.deepObject = state.deepObject;
    });
  }

以下是数据绑定属性的示例:

<mat-form-field>
  <mat-label>Some property</mat-label>
  <input matInput [value]="deepObject.someProperty" (input)="deepObject.someProperty= $event.target.value">
</mat-form-field>

但是,当我尝试实际更改属性时,出现以下错误: ERROR TypeError: Cannot assign to read only property 'someProperty' of object '[object Object]'

我了解到,状态是不可变的,在开发模式下NGXS会冻结状态的属性,因此会出错。通常,要更改状态,应该调度一个动作来完成任务。但是,对我的对象执行此操作将导致大量多余代码。

我想要的是从状态中检索对象,按照以前的方式对其进行更改,并在完成后向存储库分发操作以更新整个对象。我已经尝试过使用Object.assign({},this.deepObject对克隆进行深度冻结,但是结果是相同的。

必须有一种简单的方法来做到这一点,但是怎么办?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)