作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个弹出窗口,必须一次打开一个。它必须打开最近单击的一项并隐藏先前单击的一项。它也不会因外部点击而关闭。谁能帮我解决这个问题吗?
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;
})
}
}
关于javascript - 如何一次打开一个弹出窗口并在Angular2中单击外部时关闭弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53077694/
我是一名优秀的程序员,十分优秀!