Zum Inhalt springen

Component as Adapter

Eine Komponente ist kein Ort für Business-Logik. Sie ist ein Adapter zwischen der Domäne und der Darstellung.

Die Komponente kennt:

  • Wie Domänenzustand dargestellt werden soll (ViewModel)
  • Wie Nutzer-Interaktion an die Domäne weitergegeben wird (Facade-Calls)

Sie kennt nicht:

  • Wie der Zustand zustande kommt
  • Welche API aufgerufen wird
  • Welche Business-Regeln gelten
@Component({
template: ` <app-task-list [tasks]="facade.tasks()" [isLoading]="facade.isLoading()" (taskSelected)="facade.selectTask($event)" /> `,
})
export class TasksContainerComponent {
protected facade = inject(TasksFacade);
}

Die Komponente ist dünn. Sie mappt Signals auf Template-Inputs und User-Events auf Facade-Calls.

Wenn sich die Darstellung ändert (neues Design-System, PrimeNG → Material), ändert sich die Komponente. Die Domäne bleibt unberührt.

Wenn sich die Business-Logik ändert (neue Validierung, anderer API-Endpunkt), ändert sich die Facade/der Store. Die Komponente bleibt unberührt.

Die Adapter-Schicht absorbiert Änderungen in eine Richtung.