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