web-dev-qa-db-ja.com

angular反応性フォームのフォームコントロールとフォームグループにアクセスする方法

反応フォームのフォームグループを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  
_

2つのエラーが発生します。 _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のコントロールにどのようにアクセスできますか? angular 6

ありがとう

2
codebot

フォームコントロールを適切に取得していません。 FormGroupオブジェクトで get() メソッドを使用してformControlをフェッチします

_this.results = this.myForm.get('myFormNameDrop').valueChanges.pipe(      
  debounceTime(400),
  .........................
);
_

EDIT:

myNameにアクセスするには、次のようにします。

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


また、myNameだけに関心がある場合は、valueChangesを監視する代わりに、myNamemyFormNameDropを直接監視できます。

_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)
);
_
4
Amit Chigadani

この行を変更します。

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

へ:

this.results = this.myForm.controls.myFormNameDrop.valueChanges.pipe( ...
1
Soroush