![](/img/trans.png)
[英]Angular form group vs form control and form builder in Reactive Forms
[英]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.