Angular Service zum Neuladen von Komponenten: Eine Schritt-für-Schritt-Anleitung

von Kevin Hall
Angular-Service zum Neuladen von Komponenten

In modernen Webanwendungen sind dynamische Datentabellen weit verbreitet. Diese müssen häufig basierend auf Benutzerinteraktionen oder anderen Ereignissen neu geladen werden. In diesem Blogbeitrag zeigen wir, wie man einen TableReloadService in Angular implementiert, der es Komponenten ermöglicht, das Neuladen von Tabellen auszulösen und darauf zu reagieren.

Schritt 1: Angular Service erstellen für effizientes Neuladen von Komponenten

Zuerst erstellen wir einen Angular-Service, der für die Aktualisierung zuständig ist. Dieser Service nutzt ein RxJS Subject, um ein Attribut bereitzustellen, das bei Änderungen die abonnierten Komponenten informiert.

import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class TableReloadService {
  private reloadSubject = new Subject<void>();

  get reload$() {
    return this.reloadSubject.asObservable();
  }

  triggerReload() {
    this.reloadSubject.next();
  }
}

Das Attribut reloadSubject ist vom Typ Subject, einem speziellen Typ von Observable, der von der RxJS-Bibliothek bereitgestellt wird.

Es ermöglicht das Multicasting von Werten an mehrere Beobachter.  

Die Methode reload$ erlaubt es anderen Komponenten, das Attribut reloadSubject zu abonnieren, wodurch sie auf Änderungen dieses Attributs reagieren können.  

Die Methode triggerReload ist eine Methode, die einen neuen Wert sendet und signalisiert, dass ein Neuladen erfolgen soll.

Schritt 2: Angular Service in Komponenten integrieren – So geht’s

Als nächstes müssen wir den TableReloadService in eine Komponente injizieren, die das Neuladen auslösen wird. Angenommen, wir haben eine PreparationComponent, die die Tabellendaten neu laden muss, wenn eine Suche ausgeführt wird. Dann müssen wir sicherstellen, dass das Subject im TableReloadService diese Änderung mit erhält und dadurch die betroffenen Komponenten informiert.

import { Component } from '@angular/core';
import { TableReloadService } from './services/preparation/table-reload.service';

@Component({
  selector: 'app-preparation',
  templateUrl: './preparation.component.html',
  styleUrls: ['./preparation.component.css']
})
export class PreparationComponent {
  constructor(private tableReloadService: TableReloadService) {}

  onSearch() {
    this.tableReloadService.triggerReload();
  }
}

Wir fügen den TableReloadService im Konstruktor hinzu, damit er in der Komponente verfügbar ist.

Wenn die onSearch-Methode ausgeführt wird, wird die triggerReload-Methode des TableReloadService aufgerufen.

Dadurch ändert sich das Subject, und alle abonnierten Komponenten werden informiert.

Schritt 3: Neuladungsereignisse in Angular-Komponenten abonnieren

Schließlich müssen wir das Subject Attribut in der Komponente abonnieren, die die Tabelle anzeigt. Diese Komponente reagiert auf Änderungen des Subject und aktualisiert die Tabellendaten entsprechend.

import { Component, OnInit, OnDestroy } from '@angular/core';
import { Subscription } from 'rxjs';
import { TableReloadService } from './services/preparation/table-reload.service';

@Component({
  selector: 'app-table',
  templateUrl: './table.component.html',
  styleUrls: ['./table.component.css']
})
export class TableComponent implements OnInit, OnDestroy {
  private reloadSubscription: Subscription;

  constructor(private tableReloadService: TableReloadService) {}

  ngOnInit() {
    this.reloadSubscription = this.tableReloadService.reload$.subscribe(() => {
      this.reloadTableData();
    });
  }

  ngOnDestroy() {
    this.reloadSubscription.unsubscribe();
  }

  reloadTableData() {
    // Logik zum Neuladen der Tabellendaten
  }
}

Im ngOnInit-Hook abonnieren wir die reload$-Observable.

Bei Änderungen des Subjects wird die Methode reloadTableData aufgerufen, um die Tabellendaten zu aktualisieren.

Das Abonnement wird im ngOnDestroy-Hook beendet, um Speicherlecks zu vermeiden.

Best Practices für das Neuladen von Angular-Komponenten mit Services

Mit diesen Schritten können Sie einen Angular-Service implementieren, der es Komponenten ermöglicht, Aktualisierungsereignisse auszulösen und darauf zu reagieren. Dieser Ansatz fördert ein sauberes, entkoppeltes Design und verbessert die Wartbarkeit sowie Skalierbarkeit Ihrer Anwendung.

Zurück

© 2006-2025 exensio GmbH
Einstellungen gespeichert
Datenschutzeinstellungen

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell, während andere uns helfen, diese Website und Ihre Erfahrung zu verbessern.

Sie können Ihre Einwilligung jederzeit ändern oder widerrufen, indem Sie auf den Link in der Datenschutzerklärung klicken.

Zu den gesetzlichen Rechenschaftspflichten gehört die Einwilligung (Opt-In) zu protokollieren und archivieren. Aus diesem Grund wird Ihre Opt-In Entscheidung in eine LOG-Datei geschrieben. In dieser Datei werden folgende Daten gespeichert:

 

  • IP-Adresse des Besuchers
  • Vom Besucher gewählte Datenschutzeinstellung (Privacy Level)
  • Datum und Zeit des Speicherns
  • Domain
×
Irving Tschepke
Irving Tschepke
Dipl.-Wirtsch.-Ing.
Peter Soth
Peter Soth
Dipl.-Inform. (FH)
Wir antworten in wenigen Stunden.
Oder rufen Sie einfach an:
×
Irving Tschepke
Irving Tschepke
Dipl.-Wirtsch.-Ing.
Peter Soth
Peter Soth
Dipl.-Inform. (FH)
Wir antworten in wenigen Stunden.
Oder rufen Sie einfach an:
You are using an outdated browser. The website may not be displayed correctly. Close