mcpField
A
angular-elements

angular-elements

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

angular-elements について

@angular/elements を使って Angular コンポーネントをカスタム要素に変換する開発ガイドです。入出力のマッピング、スタンドアロン要素、バンドル、マイクロフロントエンドでの利用を扱います。

主な機能

  1. 01Angular コンポーネントからカスタム要素を作成
  2. 02コンポーネントの入出力をマッピング
  3. 03カスタム要素の動作を設定
  4. 04スタンドアロン要素の構築
  5. 05配布用の要素バンドル
  6. 06マイクロフロントエンド向けの要素登録

活用シーン

  1. 01Angular コンポーネントをウェブコンポーネントとして公開
  2. 02ウェブコンポーネントの属性とイベントを Angular に接続
  3. 03マイクロフロントエンド用の再利用可能な要素を構築
  4. 04単一バンドル形式の要素ビルドを設定

インストール

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

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

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

同梱ファイル

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

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

詳細

@angular/elements

バージョン: Angular 21(2025) タグ: Web コンポーネント、カスタム要素、マイクロフロントエンド

参考資料: Elements ガイド • API

API の変更

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

  • NEW:createCustomElement API — Angular コンポーネントをカスタム要素としてパッケージ化します

  • NEW:NgElementConfig — カスタム要素の動作を設定します

  • NEW:入力/出力のマッピング — Angular の入力/出力を Web コンポーネントの属性にマッピングします

  • NEW:スタンドアロン要素 — NgModule を使わずにスタンドアロン要素を構築します

ベストプラクティス

  • @angular/elements をインストールします
npm install @angular/elements
  • コンポーネントからカスタム要素を作成します
import { createCustomElement } from '@angular/elements';

@Injectable()
export class ElementRegistrar {
  constructor(private injector: Injector) {}

  register() {
    const element = createCustomElement(MyComponent, { injector: this.injector });
    customElements.define('my-element', element);
  }
}
  • main.ts で使用します
import { createApplication } from '@angular/platform-browser';
import { createCustomElement } from '@angular/elements';

bootstrapApplication(AppComponent).then(appRef => {
  const element = createCustomElement(MyComponent, { injector: appRef.injector });
  customElements.define('my-component', element);
});
  • 入力と出力をマッピングします
const element = createCustomElement(MyComponent, {
  injector: this.injector,
  events: ['myEvent'],
  attributes: ['myInput']
});
  • CUSTOM_ELEMENTS_SCHEMA を使用します
// To use custom elements in Angular
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';

@NgModule({
  schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class AppModule {}
  • Web コンポーネントとしてビルドします
// angular.json
{
  "build": {
    "options": {
      "outputPath": "dist",
      "singleBundle": true
    }
  }
}
  • Web コンポーネントのデータには input() と output() を使用します
@Component({
  selector: 'my-element',
  standalone: true
})
export class MyElementComponent {
  data = input<string>('');
  output = output<string>();

  onClick() {
    this.output.emit('event-data');
  }
}
  • コンテンツの投影を処理します
@Component({
  selector: 'my-element',
  template: `
    <div class="header">
      <ng-content select="[header]"></ng-content>
    </div>
    <div class="body">
      <ng-content></ng-content>
    </div>
  `
})
export class MyElementComponent {}
  • マイクロフロントエンドで使用します
// Register multiple elements
const elements = [ButtonComponent, CardComponent, InputComponent];
elements.forEach(comp => {
  const el = createCustomElement(comp, { injector });
  customElements.define(comp.selector, el);
});

コメント