angular 2.0强制刷新,如$ apply

时间:2015-11-06 10:00:05

标签: javascript angular

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

例如,我将此组件添加到另一个

A <= {sum[7], sum[7:1]};
Q <= {sum[0], Q[7:1]};
Q_1 <= Q[0];

添加时,它应该如下所示

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.

您可以在此plunker中查看此示例。

然后然后我将一个ClickListener绑定到这个Sample组件,当我点击组件已经添加到另一个组件中时,“我正在绑定内容”会出现(其他事件触发相同) 。 我认为由于互动,它已经跳出了angular2的生命周期。

与angularJs 1.x中的$ apply()类似的方法

1 个答案:

答案 0 :(得分:2)

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

您可以在plunker的Interactjs文件中使用NgZone,我编辑您的代码,它现在可以使用了。您应该在NgZone内发送您的活动。

像这样的东西。

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

在plunker上看到它 Plunker