【问题标题】:Set default value of reactive form once observable returns一旦可观察返回,设置反应形式的默认值
【发布时间】:2019-12-30 05:36:16
【问题描述】:

我有一些代码 ngOnInit 使用路由变量来过滤特定对象的可观察数组:

this.route.paramMap.subscribe(params => { // Wrapper to get route param (ID)

  this.store.dispatch(new fromStore.LoadObjects());
  this.object$ = this.store.select(fromStore.getAllObjects).pipe(
    map(
      objects => objects.filter(o => o.id === params.get('id'))[0]
    )
  );

})

然后我有以下初始化表单:

this.objectDataForm = this.formBuilder.group({
  'name':     ['', Validators.required ],
  'location': ['', Validators.required ]
});

我想以某种方式将我的可观察对象连接到表单数据以作为默认值引入。我想我需要patchValue:

this.objectDataForm.patchValue({
  name: myValue1, 
  location: myValue2
});

但我不知道如何将这个补丁值放在它在正确的时间获取值并将其传递给表单的地方。我可以很容易地对此进行核对...

【问题讨论】:

    标签: angular angular-reactive-forms


    【解决方案1】:

    您可以使用take(1) 运算符。见here

    流程是:

    • 从您的object$.pipe(take(1)) 信息流创建订阅
    • 内订阅,拨打patchValue
    • 注意:如果您希望在订阅表单的valueChanges 流时跳过此初始设置,您可能需要致电.patchValue({ ... }, { emitEvent: false })

    【讨论】:

    • 我今天已经为此工作了 5 个多小时。终于让它工作了!谢谢。
    猜你喜欢
    • 1970-01-01
    • 2018-12-26
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-15
    • 2022-10-12
    相关资源
    最近更新 更多