explicit-state-management
Loading/error/empty state pattern for HTTP data. Use when a component loads data and must show loading, error, and empty states.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Loading/error/empty state pattern for HTTP data. Use when a component loads data and must show loading, error, and empty states.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Team quality gate as executable instruction. Use when reviewing completed work before merge, or when processing PR review comments received from other reviewers.
Generate well-formed user stories from technical context. Use when generating or improving story descriptions for an issue tracker.
Type-safe validated configuration properties from application.yml. Use when adding any externalisable value.
Consistent error handling with named exceptions and global handler. Use when implementing any method that can fail with a business reason.
Consistent, safe log statements with correct levels and no PII. Use when adding or reviewing log statements.
Team standard for improving existing code without changing behaviour. Use when refactoring code.
| name | explicit-state-management |
| description | Loading/error/empty state pattern for HTTP data. Use when a component loads data and must show loading, error, and empty states. |
items: Item[] = [];
loading = false;
error: string | null = null;
private loadItems(): void {
this.loading = true;
this.error = null;
this.itemService.getItems().pipe(
takeUntil(this.destroy$)
).subscribe({
next: (items) => { this.items = items; this.loading = false; },
error: (err) => {
this.error = 'Failed to load items. Please try again.';
this.loading = false;
console.error('[ComponentName]: failed to load items', err);
}
});
}
<div *ngIf="loading">Loading…</div>
<div *ngIf="error && !loading">{{ error }} <button (click)="retry()">Retry</button></div>
<div *ngIf="!loading && !error && items.length === 0">No results.</div>
<ul *ngIf="!loading && !error && items.length > 0">...</ul>
loading = true and error = null at the start of every load call.loading = false in both next and error callbacks.retry() simply calls the load method again.async pipe when loading/error states are neededthis.error and stop