src/app/shared/alerts/alerts.component.ts

Implements

OnInit

Metadata

Relationships

Used by

Depends on

Index

Properties
Methods

Constructor

constructor(_alertsService: AlertsService)
Parameters :
Name Type Optional
_alertsService AlertsService No

Methods

ngOnInit
ngOnInit()
Returns : void
Public onAlertClose
onAlertClose()
Returns : void

Properties

Public alerts
Type : Array<Alert>
Default value : []
Private alertsSub
Type : Subscription
Default value : new Subscription()
Public hasOpenAlert
Type : boolean
Default value : false
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

Legend
Html element
Component
Html element with directive

results matching ""

    No results matching ""