我正在为一个正在工作的项目学习ngx formly和ngrx,有人知道如何正确地获取ngx formy以正确地绑定/更新ngrx存储吗?
我可以使用选择器从存储中获取要初始化的数据,但每次我输入输入字段或下拉列表时,我都会得到
ERROR TypeError: Cannot assign to read only property 'purchaseType' of object
Formly的文档没有特别提到ngrx的任何内容,但想知道是否有人知道github上的任何转发,或者我可以用它作为例子来了解是否有任何选项或任何我需要设置的东西来让它发挥作用我只是不确定Formly是如何触发状态变化的。
迟到总比不迟到好。以下是一些你可以尝试的想法:
更改您的选择器:
@Select(state => state.animals) animals$: Observable<any>;
改为复制对象:
@Select(state => structuredClone(state.animals)) animals$: Observable<any>;
请注意,这应该使Select结果是可变的。如果没有,您将需要另一种克隆方法。有了可变副本,ngx-formly应该能够根据需要使用该表单。状态的任何更改都可以通过ngx-formly字段配置中的钩子来处理。类似这样的东西:
key: 'firstName'
hooks: {
onInit: (field: FormlyFieldConfig) => {
field.form.get('firstName').valueChanges.subscribe(newName => {
this.store.dispatch(new FirstNameChanged(newName);
});
},
},
您也可以使用@ViewChild
来引用您的表单,而不是查看单个字段:
@ViewChild(NgForm) form:NgForm;
ngAfterViewInit() {
form.ValueChanges.subscribe(newValue => {
this.store.dispatch(new MyAction(newValue));
})
}
最后,这还没有经过测试,我提出了一个可能会有所帮助的想法,但您需要仔细研究实现细节,以满足您的特定需求。