Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何在每次更改时在组件内部使用角度输入指令_Angular_Angular Directive - Fatal编程技术网

Angular 如何在每次更改时在组件内部使用角度输入指令

Angular 如何在每次更改时在组件内部使用角度输入指令,angular,angular-directive,Angular,Angular Directive,我构建了一个名为intellark的指令。它在输入时将QWERTY键转换为阿拉伯语键。它很好用。在指令中使用console.log时,将显示每个已转换的字母,并相应地转换字母(键入英语,转换并以阿拉伯语显示)。我以这种方式构建它,以便通过在任何HTML输入组件上添加指令名intellark,相应地转换输入键 我的问题是这个。与下图所示的指令的keyPress()方法中的行为不同,当我将HTML输入组件添加到app.component.HTML中时,将其添加到指令intellark,双向绑定到in

我构建了一个名为
intellark
的指令。它在输入时将QWERTY键转换为阿拉伯语键。它很好用。在指令中使用console.log时,将显示每个已转换的字母,并相应地转换字母(键入英语,转换并以阿拉伯语显示)。我以这种方式构建它,以便通过在任何HTML输入组件上添加指令名
intellark
,相应地转换输入键

我的问题是这个。与下图所示的指令的
keyPress()
方法中的行为不同,当我将HTML输入组件添加到
app.component.HTML
中时,将其添加到指令
intellark
,双向绑定到
inputText
内部
app.component.ts
,方法
showIt()
不会在按键输入事件中调用。但按BACKSPACE时,它确实收到了事件

因此,某种程度上存在着脱节。如何使方法
showIt()
动态地侦听输入事件

虽然我可以使用诸如服务、EventEmitter、Subject和/或@Output之类的技术将输出发送到订阅组件,但我确信这不是正确的方法

你知道如何用非指令组件注册输入事件吗?下图显示了我为此构建的所有组件


您可以为您的输入框执行以下操作吗

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


因为在typscipt file.ts文件中暴露
$event
就是在后端暴露code.ts文件中的模板,这是一种不好的做法,并且利用
keyup
,将输入框的值传递给您code
onKey
事件。

您能试试我使用的方法吗谢谢!我喜欢SoF是因为像你这样的人。它解决了它!但是,只有在
keyup
上,我才在
keypress
上试过它,但它只在我打字时起作用,而不是在我退格时起作用。知道为什么吗?解决方案是完美的,我只是想知道为什么。@mohsenmadi-很抱歉,我在阅读了以下内容后回答:…angular网站,他们提出了这种方法…可能是退格,你可以在这里写信给angular团队:谢谢!肯定有兴趣了解更多。