2017-12-14 3 views
1

intellarkというディレクティブを作成しました。入力時にQWERTYキーをアラビア語のキーに変換します。それはうまく動作します。指令の中でconsole.logを使用すると、変換されたすべての文字が表示され、それに応じて文字が変換されます(英語で入力、アラビア語で変換および表示)。このようにして、任意のHTML入力コンポーネントに指令名intellarkを追加することにより、入力キーがそれに応じて変換されるようにしました。変更のたびにコンポーネント内の角度入力ディレクティブを使用する方法

私の問題はこれです。下の図に示す指示のkeyPress()メソッドの動作とは異なり、app.component.htmlにHTML入力コンポーネントを追加したときに指示文intellarkを追加し、inputTextapp.component.tsの値をバインドしました。showIt()はキーで呼び出されません入力イベント。それは、しかし、バックスペースを押すとイベントを受け取りました!

何とか切断されています。メソッドをshowIt()に入力すると、その場でイベントが入力されます。

サービス、EventEmitter、Subject、および/または@Outputなどの技術を使用して、購読コンポーネントに出力を送信することはできますが、これは適切な方法ではないと確信しています。

入力イベントを無指向性コンポーネントに登録する方法はありますか?下のイメージは、私がこれを組み立てたものです。

enter image description here

+1

あなたは私がsussggested方法を試してくださいできます –

答えて

1

あなたが原因typsciptファイル.TSで$eventを露出させることにより、以下のように、あなたの入力ボックス

<input #box (keyup)="onKey(box.value)"> 

のためのように行うことができますが、あなたが悪い習慣であるバックエンドのコード.TSファイルでテンプレートを公開するファイルkeyupを使用し、入力ボックスの値をonKeyイベントに渡します。

+0

ありがとう!私はあなたのような人々のためにSoFが大好きです。それはそれを解決しました!しかし、 'keyup'だけで、' keypress'で試してみましたが、私がタイプしたときにのみ機能しました。どんな考え?解決策は完璧です、私はちょうど理由を知りたいです。 – mohsenmadi

+0

@mohsenmadi - 申し訳ありませんが、私は物事を読んだ後、私は彼らがこのアプローチを提案した... https://angular.io/guide/user-input..angularサイトで答えなければなりません。ここのチームに書きなさい:https://github.com/angular/angular/issues –

+0

ありがとう!間違いなくそれについてもっと学ぶことに興味があります。 – mohsenmadi

関連する問題