簡體   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