import { Component, input, output } from '@angular/core'; import { SpinnerComponent } from '@shared/ui/atoms/spinner.component'; import type { RemoteData } from '@shared/application/remote-data'; @Component({ selector: 'app-async', imports: [SpinnerComponent], template: ` @switch (data().tag) { @case ('Loading') { } @case ('Empty') {

{{ emptyText() }}

} @case ('Failure') {

{{ errorText() }}

} @case ('Success') { } } `, }) export class AsyncComponent { data = input.required>(); emptyText = input('No data.'); errorText = input('Something went wrong.'); retryText = input('Retry'); retry = output(); }