使用* ngIf和array.splice时,会触发clickOutSide问题,它会从dom

时间:2018-06-28 14:39:55

标签: javascript angular dom array-splice ngif

我们有一个下拉组件用于显示ng-content,我们放置了外部click指令以隐藏外部点击的下拉列表

外部点击指令

 public onClick(targetElement) {
    const clickedInside = this._elementRef.nativeElement.contains(targetElement);
    if (!clickedInside) {
        this.clickedOutside.emit(null);
    }
}

还有另一个用于内联创建/更新/删除列表项的列表组件,此列表在页面级别上运行良好,当我们将其放在下拉列表中时,如果列表为* ngIf,则会遇到问题更新/删除下拉列表会自动关闭bcz,而在单击ngIF时,会在列表上更新ngIF,从dom中删除列表,因此下拉列表关闭。但是我们删除了所有* ngIf并放置了[hidden],现在更新没有问题,删除了它自动关闭的列表项,并触发了外部点击事件

列表项删除方法

onDelete(item: viewModel) {
const index: number = this.views.indexOf(item);
if (index !== -1) {
  this.views.splice(index, 1);
}

}

0 个答案:

没有答案