【问题标题】:Angular bind only when mouse moves仅在鼠标移动时进行角度绑定
【发布时间】:2022-01-09 21:29:19
【问题描述】:

我有一个非常奇怪的问题。我有一个输入,我只想在输入有值时显示一个按钮。只有当我移动鼠标时它才会起作用。

<input class="form-control"
   type="text"
   placeholder="hello there..."
   #helloInput
>

{{helloInput.value}} --> not shows until mouse is moving

<button class="btn btn-success"
   *ngIf="helloInput.value"
>Show me</button>

这很奇怪。有什么想法吗?

【问题讨论】:

  • 你能做一个stackblitz的例子吗?

标签: javascript angular typescript data-binding


【解决方案1】:

Angular 仅通过调用更改检测来更新视图。大多数情况下,由于 Event listeners/XHR/setTimeout/setInterval 调用,它会自动发生。

在您的示例中,Angular 不知道任何事件侦听器。因为它是由 mousemove 更新的,所以有一些监听器,Angular 检测到了。

为了更新您对任何输入值更改的视图,您只需添加空的input 事件侦听器:

<input class="form-control"
   type="text"
   placeholder="hello there..."
   #helloInput
   (input)="0"  <=============== this one
>

【讨论】:

  • 那么 Angular 不会对 keyup 或 keydown 事件进行更改检测?
  • 它确实在 keyupkeydown 上运行 cd 但在您的场景中没有这样的听众。我在这里使用了input 事件,因为它可以处理更多情况,例如复制/粘贴值
  • 尝试用(keyup)(keydown)替换(input)
  • 感谢您的回答。我已经用 (keyup) 进行了更改,现在可以使用了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-24
  • 2012-12-25
  • 2016-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多