2016-03-24 2 views
1

Я пишу dragDirective. Eements перетаскиваются в dragZones. В релизах мыши я делаю hitTest против всех доступных dragzones. Я поддерживаю статический логический флаг, который заканчивается как false, если все hittests возвращают false. В такой ситуации я хотел бы отменить элемент в dragZone, изначально принадлежавшем ему. Как я могу проверить это изменение значения переменной?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

Вы не можете использовать Угловое связывание, которое проверяется путем обнаружения угловых изменений в статических полях.

Вы можете добавить геттер на компонент, который пересылает это статическое поле, тогда привязка к этому получателю будет проверена с помощью обнаружения изменения углов.

IMHO предпочтительным способом является использование Observable, который испускает событие при изменении. Заинтересованный код может подписаться и получать уведомления об обновлениях.

Смежные вопросы