如何以角度反应形式访问表单控件和表单组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何以角度反应形式访问表单控件和表单组相关的知识,希望对你有一定的参考价值。
我想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
谢谢
答案
您没有正确获取表单控件。在get()对象上使用FormGroup
方法来获取formControl
this.results = this.myForm.get('myFormNameDrop').valueChanges.pipe(
debounceTime(400),
.........................
);
编辑:
要访问myName
,您可以按以下方式进行:
this.myForm.get('myFormNameDrop').get('myName').value
此外,如果你对myName
感兴趣,那么你可以直接观看valueChanges
的myName
,而不是看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( ...
以上是关于如何以角度反应形式访问表单控件和表单组的主要内容,如果未能解决你的问题,请参考以下文章