一旦可观察到的返回值,设置反应形式的默认值

时间:2019-08-26 01:33:50

标签: angular angular-reactive-forms

我有一些代码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
});

但是我无法弄清楚如何将这个补丁值放置在一个可以在适当的时间获取该值并将其传递到表单的地方。我很容易对此感到讨厌...

1 个答案:

答案 0 :(得分:0)

您可以使用awaitResult运算符。参见here

流为:

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