2017-10-10 17 views
1

テキスト入力フィールドの内容を何かをペーストした後に取得しようとしています。データを取得するにはどうすればよいですか? keyupイベントに使用した$event.target.valueでの私のアプローチは機能しません。 Ctrl + Vで貼り付けると、それはkeyupイベントのために機能しますが、ブラウザのコンテキストメニューから何かをペーストしようとすると、うまくいきません。ここでテキストの値を取得(貼り付け)イベント後に入力

は非常に単純なコードサンプルです:

@Component({ 
    selector: 'my-app', 
    template: `<input type="text" [ngModel]="value" (paste)="pasteEvent($event)" (keyup)="keyupEvent($event)"> 
    <br>{{result}}` 
}) 
export class AppComponent { 
    public result: string; 

    public pasteEvent($event: any) { 
    this.result = $event.target.value; 
    console.log('paste: '+ $event.target.value); 
    console.log($event); 
    } 

    public keyupEvent($event: any) { 
    this.result = $event.target.value; 
    console.log('keyup: '+ $event.target.value); 
    } 
} 
+1

貼り付けだけでなく、 '(ngModelChange)=" pasteEvent($ event) "'についてどうですか? –

+0

Thanks @GünterZöchbauer、あなたのアプローチは私のニーズに合っています。あなたが自由に回答を作成することができたら、私はそれを受け入れます。 – JohnDizzle

+0

ありがとう、私は私の答えを更新しました。 –

答えて

1

ユーザーが値を編集すると、何か同じように過去をするとき、あなただけのモデルが更新されますしたい場合は、あなただけの

(ngModelChange)="pasteEvent($event)" 
を使用することができます

またはあなたが実際に過去のイベントを処理したい場合は

[(ngModel)]="value" 

を結合双方向直接、イベントがclipboardData性質を持っている必要があります。

console.log($event.clipboardData); 

貼り付けたテキストを取得するには、getDataを使用することができます。

console.log($event.clipboardData.getData('Text')); 

も参照してください。
関連する問題