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

cod*_*bot 10 angular-pipe angular angular-forms angular6

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

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

这是我定义表单的方式

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

这就是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  
Run Code Online (Sandbox Code Playgroud)

我有两个错误。 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

谢谢

Ami*_*ani 14

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

this.results = this.myForm.get('myFormNameDrop').valueChanges.pipe(      
  debounceTime(400),
  .........................
);
Run Code Online (Sandbox Code Playgroud)

编辑 :

要访问myName您可以按如下方式进行:

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


另外如果你对 just 感兴趣myName,那么你可以直接看valueChangesof 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)
);
Run Code Online (Sandbox Code Playgroud)