2015-11-06 55 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