src/app/shared/alerts/alerts.component.ts
| encapsulation | ViewEncapsulation.None |
| selector | app-alerts |
| styleUrls | ./alerts.component.scss |
| templateUrl | ./alerts.component.html |
Properties |
|
Methods |
|
constructor(_alertsService: AlertsService)
|
||||||
|
Defined in src/app/shared/alerts/alerts.component.ts:17
|
||||||
|
Parameters :
|
| ngOnInit |
ngOnInit()
|
|
Defined in src/app/shared/alerts/alerts.component.ts:21
|
|
Returns :
void
|
| Public onAlertClose |
onAlertClose()
|
|
Defined in src/app/shared/alerts/alerts.component.ts:33
|
|
Returns :
void
|
| Public alerts |
Type : Array<Alert>
|
Default value : []
|
|
Defined in src/app/shared/alerts/alerts.component.ts:14
|
| Private alertsSub |
Type : Subscription
|
Default value : new Subscription()
|
|
Defined in src/app/shared/alerts/alerts.component.ts:17
|
| Public hasOpenAlert |
Type : boolean
|
Default value : false
|
|
Defined in src/app/shared/alerts/alerts.component.ts:15
|
import { Component, OnInit, ViewEncapsulation } from '@angular/core'
import { Subscription } from 'rxjs'
import { Alert } from './alert'
import { AlertsService } from './alerts.service'
@Component({
selector: 'app-alerts',
templateUrl: './alerts.component.html',
styleUrls: ['./alerts.component.scss'],
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class AlertsComponent implements OnInit {
public alerts: Array<Alert> = []
public hasOpenAlert: boolean = false
private alertsSub: Subscription = new Subscription()
constructor(private _alertsService: AlertsService) {}
ngOnInit() {
this.alertsSub = this._alertsService.alerts.subscribe((alert: Alert) => {
this.alerts.push(alert)
this.hasOpenAlert = true
if (alert.err) {
console.error(alert.err)
}
})
}
public onAlertClose() {
this.hasOpenAlert = this.alerts.some((alert) => !alert.closed)
}
}
@if (hasOpenAlert) {
<clr-alerts>
@for (alert of alerts; track alert) {
<clr-alert
[clrAlertType]="alert.type"
[clrAlertAppLevel]="true"
[(clrAlertClosed)]="alert.closed"
(clrAlertClosedChange)="onAlertClose()"
>
<div class="alert-item">
<span class="alert-text">
{{ alert.message }}
</span>
</div>
</clr-alert>
}
</clr-alerts>
}
./alerts.component.scss