mcpField
A
angular-control-flow

angular-control-flow

github.com/oguzhan18開発7170 回インストール31 週間前に更新
リポジトリ

angular-control-flow について

Angular 17以降の開発者向けに、テンプレートの制御フロー構文を扱うリファレンススキルです。条件分岐、ループ、遅延ビューと、従来のディレクティブからの移行を説明します。

主な機能

  1. 01@if と @else による条件分岐
  2. 02追跡と空状態に対応する @for
  3. 03@switch と @case による分岐
  4. 04@defer によるビューの遅延読み込み
  5. 05従来の制御フローディレクティブの移行

活用シーン

  1. 01条件付きテンプレート領域の作成
  2. 02追跡付きリストと空状態の表示
  3. 03ビューのオンデマンド読み込み
  4. 04*ngIf などの旧ディレクティブの変換

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/oguzhan18/angular-ecosystem-skills --skill angular-control-flow

インストール後、Claude Code で/angular-control-flowを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/discussions/
_INDEX.md
references/docs/
_INDEX.md
references/issues/
_INDEX.md
references/releases/
_INDEX.md

詳細

Angular コントロールフロー

バージョン: Angular 17+(2025) タグ: コントロールフロー、@if、@for、@switch、@defer

参考資料: コントロールフロー • 遅延ビュー

API の変更点

このセクションでは、最近のバージョン固有の API の変更点について説明します。

  • 新機能:@if は *ngIf を置き換えます — 新しい制御フロー構文です

  • 新機能:@for は *ngFor を置き換えます — track を使う新しいループ構文です

  • 新機能:@switch は ngSwitch を置き換えます — 新しい switch 構文です

  • 新機能:@defer — コンポーネントを遅延読み込みします

  • 非推奨:*ngIf、*ngFor、*ngSwitch — 新しい構文に移行してください

ベストプラクティス

  • 条件分岐には @if を使用します
@Component({
  template: `
    @if (isLoggedIn) {
      <p>Welcome!</p>
    } @else {
      <p>Please login</p>
    }
  `
})
export class MyComponent {
  isLoggedIn = signal(false);
}
  • @else if を使用します
@Component({
  template: `
    @if (user.role === 'admin') {
      <p>Admin panel</p>
    } @else if (user.role === 'user') {
      <p>User dashboard</p>
    } @else {
      <p>Guest view</p>
    }
  `
})
export class MyComponent {}
  • ループには @for を使用します
@Component({
  template: `
    @for (item of items; track item.id) {
      <li>{{ item.name }}</li>
    }
  `
})
export class MyComponent {
  items = [{ id: 1, name: 'A' }, { id: 2, name: 'B' }];
}
  • パフォーマンス向上のために track を使用します
@for (user of users; track user.id) {
  <li>{{ user.name }}</li>
}
  • 空のリストには @empty を使用します
@Component({
  template: `
    @for (item of items; track item.id) {
      {{ item.name }}
    } @empty {
      <p>No items found</p>
    }
  `
})
export class MyComponent {}
  • 条件分岐には @switch を使用します
@Component({
  template: `
    @switch (status) {
      @case ('loading') {
        <p>Loading...</p>
      }
      @case ('success') {
        <p>Success!</p>
      }
      @case ('error') {
        <p>Error occurred</p>
      }
      @default {
        <p>Unknown status</p>
      }
    }
  `
})
export class MyComponent {
  status = 'loading';
}
  • 遅延読み込みには @defer を使用します
@Component({
  template: `
    @defer (on viewport) {
      <heavy-chart />
    } @placeholder {
      <div>Loading chart...</div>
    }
  `
})
export class DashboardComponent {}
  • 条件とともに @defer を使用します
@Component({
  template: `
    @defer (on hover) {
      <tooltip />
    }
    
    @defer (when isReady) {
      <ready-component />
    }
  `
})
export class MyComponent {}
  • *ngIf から移行します
ng generate @angular/core:control-flow
  • @if で else を使用します
@if (condition) {
  content
} @else {
  alternative
}

コメント