3 つの @angular プロジェクトがすべて v6.1.9 を使用している場合: host、alpha、およびbeta
alphabeta@angular/elements などを使用して、それぞれ Web コンポーネントを作成および定義します。
constructor(private injector: Injector) {}
ngDoBootstrap() {
const config: NgElementConfig = { injector: this.injector };
const component= createCustomElement(component, config);
customElements.define("alpha-component", component); // beta-component respectively
}
alphaおよびbetaを使用してビルドされng build --prod --output-hashing none、ビルド後のスクリプトが実行されて、結果のファイルが次の順序で連結されますscripts.js, styles.js, runtime.js, main.js。
polyfills.js はmain.ts、ライブラリのロード時に使用されるポリフィルが既に定義されているかどうかをチェックするため、スキップされます (たとえば、zones.js を再定義しようとするのを避けるため)。
結果のバンドルはalpha-component.bundle.jsとbeta-component.bundle.jsです。
hostタグ付きの<head>で上記のバンドルを参照します。index.html<script defer>
バンドルがalphathenの順序で参照されている場合、 2 回ブートストラップしようとしているbetaことがわかります。逆の順序で、ブートストラップを 2 回試みているalphaことがわかります。beta
最初に参照されたバンドルは 2 回ブートストラップを試行するため、バンドルの Web コンポーネントを 2 回定義しようとするため、エラーが発生し、2 番目に参照されたバンドルの Web コンポーネントは登録されません。
目標は、@angular を使用して多くの Web コンポーネントを作成し、それらを他の @angular またはinsert framework hereテクノロジー内で使用できるようにすることです。