Angular:event.srcElement没有指向期望的Element
发布时间:2020-12-17 17:10:57 所属栏目:安全 来源:网络整理
导读:要学习Angular的基础知识,我决定写一个小数独游戏. 这里是动态构建Sudoku网格的html: div*ngIf="(this.sudokuGenerated !this.sudokuSolved) || this.isEmptySudoku"table id="grid" style="border-collapse: collapse;" tr class="grid-row" *ngFor="let r
要学习Angular的基础知识,我决定写一个小数独游戏.
这里是动态构建Sudoku网格的html: <div *ngIf="(this.sudokuGenerated && !this.sudokuSolved) || this.isEmptySudoku"> <table id="grid" style="border-collapse: collapse;"> <tr class="grid-row" *ngFor="let row of this.displaySudoku.workingCopy; index as i;"> <td #sudokucell class="grid-cell" *ngFor="let cell of row; index as j;" (click)="this.setNumberInCell(i,j,$event)"> <span class="empty-cell" *ngIf="this.displaySudoku.workingCopy[i][j] == 0"> </span> <span class="empty-cell" *ngIf="this.displaySudoku.workingCopy[i][j] != 0 && this.displaySudoku.grid[i][j] == 0">{{cell}}</span> <span class="given-cell" *ngIf="this.displaySudoku.workingCopy[i][j] != 0 && this.displaySudoku.grid[i][j] != 0">{{cell}}</span> </td> </tr> </table> 如您所见,每个td都有一个点击事件.单击时,将调用以下方法.在该方法中,先前选择的数字被写入所选择的单元格(td).插入号码后,将根据数独解决方案检查号码.如果错误,单元格(td)将获得一个“错误单元格”css类,将背景颜色更改为红色: setNumberInCell(row: number,col: number,event: Event): void { if (this.selectedNumber != null && !this.sudokuSolved && this.displaySudoku.grid[row][col] == 0) { this.displaySudoku.workingCopy[row][col] = this.selectedNumber; this.checkAndRenderErrorCell(row,col,this.selectedNumber,event.srcElement); } } checkAndRenderErrorCell(row: number,nr: number,element: Element): void { if (this.checkMode && element != undefined) { if (this.displaySudoku.workingCopy[row][col] != this.displaySudoku.solution[row][col]) { console.log(element); this.renderer.addClass(element,'error-cell'); this.renderer.removeClass(element,'selected-cell'); } } } 我的问题是,当我点击一个单元格并从事件中获取srcElement时,我总是得到错误的元素. 非常感谢你的帮助! *更新*我也尝试了event.target和event.currenTarget.但我仍然得到错误的元素 解决方法
如果要访问调度事件的元素,则应使用$event.target属性.
setNumberInCell(row: number,event.target); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |