2016-08-01 4 views
0

У меня есть функцияevent.target не признал angular2

transferDataSuccess(event, cat,label ,e){ 
    var target = e.target || e.srcElement || e.currentTarget; 
    this.handler.emit({e:event, cat:cat , labelCS:event.dragData.labelCS});  
    this.unhighlightElement(event , e); 

} 

он переплетен к элементу через

(onDropSuccess)="transferDataSuccess($event, node.id , node.label , $event)" 

однако это всегда приводит к ошибке

TypeError: Cannot read property 'nodeName' of undefined 

он не может получить доступ события .target, имеет ли angular2 метод event.target или simmiliar? Если нет, что не так с моей частью кода? Почему он не может найти event.target?

// функция снятия выделения

unhighlightElement(e , x){ 
    e=e||window.event; 
    var el = x || e.target; 
    //alert(el.nodeName) 
    while(el.nodeName != 'DIV'){ 
     el = el.parentNode; 
    } 

    el.style.border=""; 

    e.stopPropagation(); 
    e.preventDefault();  
    } 

ответ

1

Я предполагаю, что это должно быть:

(onDropSuccess)="transferDataSuccess($event, node.id, node.label)" 

и ваша функция будет выглядеть следующим образом:

transferDataSuccess(event, cat, label){ 
    this.handler.emit({ e:event, cat:cat, labelCS: event.dragData.labelCS });  
    this.unhighlightElement(event.mouseEvent); 
} 

unhighlightElement(e){ 
    var el = e.target; 
    //alert(el.nodeName) 
    while(el.nodeName != 'DIV'){ 
    el = el.parentNode; 
    } 

    el.style.border=""; 

    e.stopPropagation(); 
    e.preventDefault();  
} 

Смотрите эту строку: https://github.com/akserg/ng2-dnd/blob/09296dc1c0a5d7b04ae742d60f49c57398b4e375/src/dnd.droppable.ts#L82

Plunker Example

+0

это не работает на mozilla tho. –

+0

Можете ли вы предоставить плункер, который воспроизводит вашу проблему? – yurzui

+0

потребовалось бы много структуры из кода, который довольно большой. внутри unhighlightElement i call store var el = e || event.target, который не определен mozilla –