2016-03-24 46 views
1

我正在編寫dragDirective。 Eements被拖入dragZones。在鼠標釋放時,我對所有可用的拖動區域執行hitTest。我維護一個靜態布爾標誌,如果所有的hittests都返回false,那麼結果是false。在這種情況下,我想將元素重新放置在原來屬於的拖動區中。如何檢查變量值的這種變化?ANGULAR2:檢測某個類的靜態變量的變化

this._messageBus.listen("dragStart", (obj, event) => { 
     DragZoneDirective.HITTEST = false; 
    }); 
    this._messageBus.listen("dragStop", (obj, event) => { 
     if (this.hitTest(event.x, event.y)) 
     { 
      //clone object 
      let clone: Object = JSON.parse(JSON.stringify(obj)); 
      this.dragZoneElems.push(clone); 
      DragZoneDirective.HITTEST = true; 
     } 

     let index = this.dragZoneElems.indexOf(obj); 
     if (index > -1) 
      this.dragZoneElems.splice(index, 1); 
    }); 

回答

0

您不能使用靜態字段上的角度更改檢測所檢查的角度綁定。

您可以在轉發到該靜態字段的組件上添加getter,然後通過Angulars更改檢測來檢查綁定到該getter。

恕我直言,首選的方法是使用Observable發佈變更事件。有興趣的代碼可以訂閱並獲得有關更新的通知。