gpt4 book ai didi

javascript - 如何一次打开一个弹出窗口并在Angular2中单击外部时关闭弹出窗口

转载 作者:行者123 更新时间:2023-11-29 16:34:03 24 4
gpt4 key购买 nike

我有一个弹出窗口,必须一次打开一个。它必须打开最近单击的一项并隐藏先前单击的一项。它也不会因外部点击而关闭。谁能帮我解决这个问题吗?

HTML:

<td>
<a (click)="editCondition(rowData)">
<i class="fa fa-ellipsis-h" style="color:#0847a1"></i>
</a>
<div class="switch-list" id="switch-list" *ngIf="rowData.isViewDetails">
<a id="ccd_viewdetails" (click)="gotoViewDetails(rowData)">View Details</a>
<a>Download</a>
</div>
</td>

TS:

 editCondition(rowData) {
console.log(rowData);
rowData.isViewDetails = !rowData.isViewDetails;
}

这是工作演示:

https://stackblitz.com/edit/angular-c16wte?file=src/app/app.component.ts

最佳答案

只需重置ccdList的所有items即可。

需要对您的函数进行一些小更改editCondition

 editCondition(rowData) {
this.ccdList.forEach(item=>{
item.isViewDetails = false;
})
console.log(rowData);
rowData.isViewDetails = !rowData.isViewDetails;
}

对于外部点击,请使用HostListener

@HostListener('document:click', ['$event'])
windowClick($event) {
let exceptElementFound = false;
Object.keys($event.target.classList).forEach(key => {
if ($event.target.classList[key] == "fa-ellipsis-h") {
exceptElementFound = true;
}
})
if (!exceptElementFound) {
this.ccdList.forEach(item => {
item.isViewDetails = false;
})
}
}

工作副本在这里 - https://stackblitz.com/edit/angular-bbyz8n

关于javascript - 如何一次打开一个弹出窗口并在Angular2中单击外部时关闭弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53077694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com