在 Angular 2+ 中通过单击警报外部关闭 bootstrap 警报
dismiss bootstrap alert in Angular 2+ by clicking outside of alert
我的 Angular 2 网络应用程序中有以下警报:
HTML
<div class="alert alert-primary alert-dismissible fade show" role="alert" *ngIf="this.MiddleC == true">
<strong>YES!!! That's Middle C!!!</strong>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
如何编写一个 TS 方法来在我单击 DOM 中的其他任何地方时关闭此警报?不知道该怎么做。我是否需要从 DOM 中的所有其他元素调用此函数,或者是否有解决此问题的方法?
解决此问题的方法之一是创建额外的 "overlay" 元素,该元素基本上位于 DOM 中模态下方。
您的 html 应该看起来像:
<div class="overlay" (click)="this.MiddleC = false"></div>
<div class="alert alert-primary alert-dismissible fade show" role="alert" *ngIf="this.MiddleC == true">
<strong>YES!!! That's Middle C!!!</strong>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
然后css:
.overlay{
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: MODAL_ZINDEX - 1;
}
第二种方法可以是@HostListener,这应该有效:
@HostListener('window:click', ['$event'])
onWindowClick($event){
//check if its not modal that is clicked
}
我的 Angular 2 网络应用程序中有以下警报:
HTML
<div class="alert alert-primary alert-dismissible fade show" role="alert" *ngIf="this.MiddleC == true">
<strong>YES!!! That's Middle C!!!</strong>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
如何编写一个 TS 方法来在我单击 DOM 中的其他任何地方时关闭此警报?不知道该怎么做。我是否需要从 DOM 中的所有其他元素调用此函数,或者是否有解决此问题的方法?
解决此问题的方法之一是创建额外的 "overlay" 元素,该元素基本上位于 DOM 中模态下方。 您的 html 应该看起来像:
<div class="overlay" (click)="this.MiddleC = false"></div>
<div class="alert alert-primary alert-dismissible fade show" role="alert" *ngIf="this.MiddleC == true">
<strong>YES!!! That's Middle C!!!</strong>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
然后css:
.overlay{
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: MODAL_ZINDEX - 1;
}
第二种方法可以是@HostListener,这应该有效:
@HostListener('window:click', ['$event'])
onWindowClick($event){
//check if its not modal that is clicked
}