为了账号安全,请及时绑定邮箱和手机立即绑定

Bug 子组件输入到补丁反应表单不会在 Oninit 上更新

Bug 子组件输入到补丁反应表单不会在 Oninit 上更新

慕虎7371278 2023-08-05 20:42:32
我在 ngrx 实体存储中获取了根据寻呼机以块的形式显示的数据,我的问题是 rxjs 它如何记住分页,例如我从服务器获取第一页数据,它可以工作,然后如果我获取下一页,它现在可以正常加载如果我回到第一页,数据被 switchMap 截断,如果我再次转到前面一页,当商店中有数据时,switchMap 会给我一个空数组...之后我完全对 rxjs 感到困惑...这是我在创建新数组时也显示的代码,一切正常我只是不明白这种奇怪的效果为什么会导致不可变数据?我还使用 ngrx 在 Oninit 上的子组件中加载输入的保存状态,我使用保存的状态修补表单,然后在表单上设置一个侦听器,以便每次输入更改时我都会保存它。开发中的问题它工作得很好,但在生产中它无法修补输入,我猜测在 Oninit 运行后加载数据需要更长的时间。处理这种情况的最佳方法是什么,尝试了不同的方法,一些方法给出错误,导致数据在视图渲染之前被修改,另一种方法让我陷入无限循环。这是子代码export class ChildComponent implements OnInit {  @Output() updateFilters = new EventEmitter<string>(false);  @Input() filters: MessageFilter;  form: FormGroup;  constructor(fb: FormBuilder) {    this.form = fb.group({ kind: [] });  }  ngOnInit() {    if (this.filters.kind) {      this.form.patchValue({kind: this.filters.kind});    }    this.form.valueChanges.pipe(      untilDestroyed(this),      distinctUntilChanged(),    ).subscribe(values => {      this.updateFilters.emit(values.kind);    });  }}
查看完整描述

1 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

改用怎么样OnChanges?检查您的更改状态/值@Input() filters


import { OnChanges, SimpleChanges } from '@angular/core';



@Component({...})

export class ChildComponent implements OnInit, OnChanges {


   ...


   @Input() filters: MessageFilter;


   ngOnChanges({ filters }: SimpleChanges) {

       console.log(filters);     // if you want to check any states/activities

    

       if (filters && filters.currentValue && filters.currentValue.kind)

            this.form.patchValue({ kind: this.filters.kind });   

   }


   ngOnInit() {

       this.form.valueChanges.pipe(

          untilDestroyed(this),

          distinctUntilChanged(),

       ).subscribe(values => this.updateFilters.emit(values.kind));

   }


}


查看完整回答
反对 回复 2023-08-05
  • 1 回答
  • 0 关注
  • 64 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信