2017-03-15 27 views
3

我制作了一个带有嵌套字段的角度2模型驱动表单。其中一个字段是数字字段,我正在使用jquery插件进行数字格式化。我添加了一个指令来初始化这个插件,当添加一个新的输入行时,但是当我添加一个新行时,总数必须分配给所有行,这是一个数量。我在我的模型中创建了一个函数来更新formGroup中的字段。输入字段在鼠标结束时更新

我的问题是,该视图显示每行的新值,但是,该插件正在格式化此字段,并且浏览器仅显示将鼠标光标放置时格式化的字段。看起来角度并没有像应该那样更新视图。

以下是关于一些图像发生了什么:

第一层出现时,在顶部的第一场没有显示格式,但它的。 image 1

这里是如何显示在移动鼠标后: image 2

我加了一些行,看看它们是如何显示: image 3

而且在移动鼠标后: image 4

ps:不要告诉我“你不应该使用jquery与角等等等等等......”。我知道这一点,但我需要使用它。

+0

“你不应该使用jquery与角等等等等等等......”。 –

+0

问题是Angular没有得到有关更改值的通知,并且不运行更改检测。如果您的Angular应用程序侦听到事件,则Angular运行会更改检测。当您将鼠标悬停在输入上时,这似乎就是这种情况。 您需要从jQuery中让Angular知道需要运行更改检测。有不同的方法http://stackoverflow.com/questions/34827334/triggering-angular2-change-detection-manually –

+0

@GünterZöchbauer我试图在chrome控制台中使用document.createEvent()手动创建事件,但没有成功,即使使用鼠标悬停或onmouseover事件。我需要知道我需要点燃哪个事件才能发现这种变化。 编辑:角度内的那些方法强制更改检测我也在这里试过,没有工作。 –

回答

-1

我最好的猜测是你所做的改变是在Angular之外做出的,因此它的变化检测引擎并不知道这些变化。一个简单的方法来强制这是使用setTimeout

setTimeout(() => { 
    // Code that modify model values go here 
}) 
相关问题