繁体   English   中英

如何以角度反应形式访问表单控件和表单组

[英]How to access form control and form group in angular reactive form

我想pipe一个反应形式的表单组。

然后我想对这个组单独的控件做一些检查。

这是我定义表单的方式

  myForm = this.formBuilder.group({
    myFormNameDrop: this.formBuilder.group({
      myName:['',Validators.required],
      myDrop:['era']
    }),    
    style:[''],
    userId:[this.user_id]
  });

这是我尝试创建的pipe

this.results = this.myForm.value.myFormNameDrop.valueChanges.pipe(      
  debounceTime(400),
  distinctUntilChanged(),            
  filter(formdata => formdata.myName.length > 0),
  switchMap( formdata => this.shoesService.details(formdata.myName)),
  shareReplay(1)
);//pipe  

我得到两个错误。 TypeError: Cannot read property 'pipe' of undefined关于this.results = this.myForm.value.myFormNameDrop.valueChanges.pipe(

并且 VS 代码显示有关filter(formdata => formdata.myName.length > 0),属性myName在类型'{}'上不存在

在这种情况下,如何访问 formGroups 和 formGroups 控件? 我使用角度 6

谢谢

您没有正确获取表单控件。 FormGroup对象上使用get()方法来获取formControl

this.results = this.myForm.get('myFormNameDrop').valueChanges.pipe(      
  debounceTime(400),
  .........................
);

编辑:

要访问myName您可以按照以下步骤进行操作:

this.myForm.get('myFormNameDrop').get('myName').value


另外,如果仅对myName感兴趣,则可以直接监视myName valueChanges ,而不是监视myFormNameDrop

this.results = this.myForm.get('myFormNameDrop').get('myName').valueChanges.pipe(      
  debounceTime(400),
  distinctUntilChanged(),            
  filter((myName) => myName.length > 0),
  switchMap(myName => this.shoesService.details(myName)),
  shareReplay(1)
);

更改此行:

this.results = this.myForm.value.myFormNameDrop.valueChanges.pipe( ...

至 :

this.results = this.myForm.controls.myFormNameDrop.valueChanges.pipe( ...

this.myForm.controls['myFormNameDrop']

在模板中工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM