问题标签 [angular2-hostbinding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
34 浏览

angular - HostBinding to value 仅在第一次有效

我有一个 ControlValueAccessor 指令,它执行值格式化,但@HostBinding('value')它只在第一次工作。

请在https://stackblitz.com/edit/angular-ivy-vfahu3?file=src%2Fapp%2Fapp.component.ts查看完整示例

  1. 当我第一次单击“重置”按钮时,按预期将 ngModel 设置为“重置”并将文本设置<input>为“重置”。
  2. 然后我将输入值编辑为“Test”,并将值作为“TEST”传播回模型,如预期的那样。
  3. 当我第二次单击“重置”按钮时,ngModel 按预期设置为“重置”,但文本<input>保留为“测试”。我希望它会像第 1 点一样更改为“重置”。

你能解释一下这种行为吗?有什么线索吗?

旁注:我知道上面的示例可以通过其他方式实现,但这只是我使用的情况的简化,<input type="datetime-local>并且指令将输入值转换为 ISO 格式。

0 投票
0 回答
32 浏览

angular - 为什么我的 *ngFor 列表在 @HostListener 事件触发时被重新加载

我有一个自定义指令,使用 HostListener 来检测鼠标何时进入列表元素,并使用 HostBinding 来更改元素的背景颜色。

放置此指令的元素是“设备”列表。当点击一个设备时,会发出一个事件来通知其他组件,这些组件使用所选设备列出属于该设备的一系列传感器。

该功能工作正常。但是,我注意到当我在 getImage 函数(在 ngFor 循环期间使用)中放置一个 console.log 时,每次鼠标进入(或离开)应用指令的元素时都会调用该函数。即,当 HostListener 被触发时,传感器列表被重新加载?

使用组件的 ngOnChanges 没有获取任何内容。如果我删除指令,这种行为就会停止。当我与 ngx 图表交互以及图表进入动画时,也会发生相同的行为。