代码之家  ›  专栏  ›  技术社区  ›  Coltuxumab

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

  •  0
  • Coltuxumab  · 技术社区  · 5 年前

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

    但我不知道如何将这个修补程序的值放在一个合适的时间获取值并将其传递到表单的位置。我可以轻而易举地把这个…

    2 回复  |  直到 5 年前
        1
  •  0
  •   Ngoc Nam Nguyen    5 年前

    你可以利用 take(1) 操作员。见 here .

    流量为:

    • 从您的 object$.pipe(take(1)) 流动
    • 内部订阅,呼叫 patchValue
    • 注: 你可能想打电话 .patchValue({ ... }, { emitEvent: false }) 如果您希望在订阅窗体时跳过此初始设置 valueChanges 流动