2017-05-05 10 views
0

入力ボックスの値の変更を識別し、古い値が新しい値と異なる場合はイベントを発生させる必要があります。以下の私のテンプレートやコンポーネントのコードです:同じコンポーネントの入力値の変化を特定する角度2

テンプレート:

<input [(ngModel)]="filters[i]" type="text" size="30" pInputText (keyup)="filterByField($event, col.field, fieldType.TEXT, 'keyup')" 
                 (focusout)="filterByField($event, col.field, fieldType.TEXT, 'focusout')" 
                 class="{{'input-'+col.field}}" /> 

コンポーネント:

filterByField(event, field, fieldType, eventType) { 
     if (fieldType === this.fieldType.DD) { 
      event.originalEvent.stopPropagation(); 
      this.resetFilterBy(event.value.trim(), field); 
      this.loadData(null, true); 
     } 
     else if (fieldType === this.fieldType.TEXT) { 
      if (event.keyCode == 69 && field == this.fields.TASKID.field) { 
       this.filters[3] = ''; 
      } 
      if (event.keyCode === 13) { 
       let filterValue = event.target.value; 
       this.resetFilterBy(filterValue.trim(), field); 
       this.loadData(null, true); 
      } 
     } 
    } 

誰かがお勧めできます、どのように私は入力の変化を検出しないこと

+0

[反応形式]を調べ、[(ngModel)]は使用しません。反応形式は、Angular.ioの公式文書に記載されています。そうでなければ[(ngModel)]を[value] = "filter [i]"や(change)= "filterChanged($ event、filter [i]、i)"のように置き換えてください。 – Picci

答えて

1

値私は角度フォーム/ FormControlを使用して、それを購読して変更を取得します。あなただけの新しい値を取得するようsubscribedistinctUntilChanged()を追加すると、それをしなければなら

コンポーネント

import { Component, OnInit } from '@angular/core'; 
import { FormControl, Validators } from '@angular/forms'; 

@Component({ 
    selector: 'component', 
    templateUrl: './component.component.html', 
    styleUrls: ['./component.component.scss'] 
}) 
export class Component implements OnInit { 

    testForm = new FormControl('', Validators.required); 

    ngOnInit() { 
    this.testForm.valueChanges.distinctUntilChanged().subscribe(value => { 
     // do something with the value 
    }) 
    } 
} 

<input [formControl]="testForm" type="text"> 
-1

はあなたが行うことができますテンプレート:

<input type="number" size="30" (change)="$event.target.value == prevValue ? fireEventMethod() : '' "/> 

注:prevValueは、入力フィールドの以前の値を保持するコンポーネント内のインスタンス変数で、fireEventMethod()は実行するイベントを実行するメソッドです。私は古い価値が新しい価値と違うならあなたが意味すると思います。

+0

処理する –

関連する問題