2017-06-21 57 views
1

エラー:スクリプト上で無効なイベントターゲットがありました。以前は@ViewChildで問題なく使用しましたが、FormGroupを使用しようとするとエラーが発生しました!!観測可能な角型

import { Component , OnInit } from '@angular/core'; 
import {FormGroup,FormBuilder} from '@angular/forms'; 
import {Observable} from 'rxjs/Rx'; 

@Component({ 
selector: 'app-root', 
template: `<h1>Hello World!</h1> 
      <form [formGroup]="frm1"> 
      <input type="text" formControlName="name" > 
      <input type="text" formControlName="family" #family> 
      </form> 
      `, 

}) 

export class AppComponent implements OnInit{ 

frm1 : FormGroup; 

constructor(fb:FormBuilder){ 
    this.frm1 = fb.group({ 
     name : [], 
     family: [] 
    });  
} 
ngOnInit(){ 
    var keyup = Observable.fromEvent(this.frm1.get('family').value , "keyup") 
       .map((data:string) => data.replace(' ','-')) 
       .debounceTime(400);    
    keyup.subscribe(x => console.log(x)); 
} 
} 

答えて

2

Observable.fromEventの最初のパラメータは、のHTMLElement(オブジェクト)ではなく、その値(文字列)である必要があります。

FormControlは既にvalueChangesというEventEmmitterを提供しているので、手動で観測可能なものを作成する必要はありません。したがって、次のようなことをするだけで済みます:

ngOnInit() { 
    var keyup = this.frm1.get('family').valueChanges 
      .map((data:string) => data.replace(' ','-')) 
      .debounceTime(400);    
    keyup.subscribe(x => console.log(x)); 
} 
+0

これまでに値を削除してエラーが発生しました。 'AbstractControl'タイプの引数は、 'EventTargetLike'タイプのパラメータに割り当てられません。 タイプ 'AbstractControl'はタイプ 'HTMLCollection'に割り当てられません。 プロパティ 'namedContem'に 'namedItem'プロパティがありません。 –

+0

とにかく私はこれをやりません。 HTMLFormElementはローカル変数参照で取得できますが、単に 'valueChanges'を使う方が良いでしょう。更新された回答を確認してください。ずっと簡単です。 – dfsq

+0

あなたが書きましたが、私は新しいエラーが発生しました:this.frm1.get(...)。valueChanges.mapは関数ではありません –

関連する問題