2017-06-19 14 views
0

私のフォームフィールドを購読する前に、スペースを " - "に置き換えます。しかし、私は購読に誤りがあります。 エラーTypeError例外:無効なイベントターゲット角度観測可能で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"> 
      </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)); 
} 
} 
+0

他のアイデア? –

答えて

0

あなたがこのアプローチを試すことができます。

template: `<h1>Hello World!</h1> 
      <form [formGroup]="frm1"> 
      <input type="text" #nameInput formControlName="name" > 
      <input type="text" #familyInput formControlName="family"> 
      </form> 
      ` 
@ViewChild('nameInput') nameInputRef: ElementRef; 
@ViewChild('familyInput') familyInputRef: ElementRef; 

var keyup = Observable.fromEvent(this.familyInputRef.nativeElement , "keyup") 
       .map((data:string) => data.replace(' ','-')) 
       .debounceTime(400);    
    keyup.subscribe(x => console.log(x)); 
+0

はい、これまで@Viewchildを使っていましたが、すでにformControlNameの基底を探しています –

0

あなたはフォームで使用することができますvalueChangesに加入することにより、入力フィールドの変化、のために見ることができ、 patchValueを使用して新しい値を割り当てます。

したがって、このような何か:

this.frm1.get('family').valueChanges.debounceTime(400).subscribe(value => { 
    this.frm1.get('family').patchValue(value.replace(' ', '-')) 
}) 

を、あなたが行ってもいいです! :)

DEMO

+0

改善のために、this.frm1.get( 'family') 'という変数を変数に入れることができます:' const familyCtrl = this.frm1.get( 'family') 'なので、' subscribe'の中で常に 'get'メソッドを呼び出す必要はありません。スペースを無期限に(速く)押しても期待通りの結果が得られない場合は、置き換えを次のように変更することをお勧めします: '.replace(/ \ s/g、 ' - ')' :) [* * PLUNKER **](http://plnkr.co/edit/h49aMf9hCm7Tna2Q3qck?p=info) – developer033

+0

@developer033あなたは私をストーカーしていますか? :D:Dうん、しかしあなたは完全に正しい! :) – Alex

+1

私は最新のアクティブな質問を見ているからです:)そのことについては申し訳ありません – developer033

関連する問題