уровне вьюхи компоненты для поиска на каком вложенном элементе произошло событие. Из вьюхи вызывается как (click)="_getTaskDetailsForModal($event)"
Если в определении метода _getTaskDetailsForModal не указать тип аргумента, то все работает корректно. Если указать тип event: MouseEvent, то VS Code показывает такие ошибки:
1) Оператор "!==" невозможно применить к типам "EventTarget" и "this".
2) Свойство "tagName" не существует в типе "EventTarget"
3) Свойство "dataset" не существует в типе "EventTarget"
4) Свойство "parentNode" не существует в типе "EventTarget".
Подскажите, что нужно поменять, чтобы и тип аргумента был указан и код отдавал тот же результат?
Сам код такой
private _getTaskDetailsForModal(event) {
let target = event.target;
while (target !== this && target !== null) {
if (target.tagName === 'APP-TASK') {
const groupIndex = this._boardService.board.groups.findIndex(
item => item._id === target.dataset.taskGroupId
);
const taskIndex = this._boardService.board.groups[groupIndex].tasks.findIndex(item => item._id === target.dataset.taskId);
this._taskService.taskDetails = Object.assign({}, this._boardService.board.groups[groupIndex].tasks[taskIndex]);
if (!this._isModalSignInVisible && this._isModalSignUpVisible) {
this.toggleAuthFormsVisible();
}
this._openModal(this.modal1);
return;
}
target = target.parentNode;
}
}
Потому что EventTarget !== HTMLElement
Может лучше переписать это без while и прочего, а обработчик повесить на APP-TASK? А то это на треш похоже
Обсуждают сегодня