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

时间:2018-08-29 10:54:11

标签: angular angular6 angular-forms angular-pipe

我想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

谢谢

2 个答案:

答案 0 :(得分:1)

您没有正确获取表单控件。在FormGroup对象上使用get()方法来获取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)
);

答案 1 :(得分:1)

更改此行:

public function actionExportcsv() {
        header('content-type: application/pdf');
        header('Content-Disposition: attachment;filename="export.pdf"');

        // code for your pdf

        exit();
    }

至:

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