2015-11-06 29 views
3

我创建了一个应用程序,从列表中拖出一个组件(angular2组件,下同),并将其放入另一个组件。在这个过程中,我使用interactjs来拖放组件。但是,当我将它放入另一个组件时,它只会将静态HTML加载到拖动的组件模板中。

例如,我有这个组件添加到另一个

import {Component, View} from 'angular2/angular2' 

@Component{ 
    selector:"sample" 
} 

@View{ 
    template:`<p>static content</p><p>{{contentToBind}}</p>` 
} 

class Sample{ 
    contentToBind:string= "I am the binding content." 
} 

,当它补充说,它应该看起来像下面

static content 
I am the binding content. 

但实际上它只是显示一个类似

static content 
静态内容

您可以在此plunker

然后我点击HostListener绑定到该样品组件,当我点击该组件已被添加到另一个组件,“我绑定的内容”将会出现(其它事件触发相同)。 我认为由于交互它已经跳出了angular2的生命周期。

在angularJs 1.x中有$ apply()方法吗?

+0

大概的问题是,你的变量名不匹配的一个模板。 –

+0

@EricMartinez我检查了这一点。不幸的是,不是这一点... – Garry

+0

对不起,我已经更新了问题中的变量。 – Garry

回答

2

Interact不是角度2的一部分,也许你的Interact代码超出了角度2的范围,正如你所说的。

你可以在你的Interactjs文件中使用NgZone,我编辑你的代码,现在就可以工作。您应该在NgZone内发送您的活动。

这样的事情。

myParent.ngZone.run(
    () => { 
     console.log("onDrop..."); 
     ce.drop("Hello"); 
    } 
); 

看到它在plunker Plunker

+0

谢谢。该解决方案解决了这个问题并且工作正常。 – Garry