What is @angular/elements?
@angular/elements allows Angular components to be used as custom elements (web components). This enables the integration of Angular components into non-Angular applications and enhances reusability across different frameworks and libraries.
What are @angular/elements's main functionalities?
Creating a Custom Element
This code demonstrates how to create a custom element from an Angular component. The `createCustomElement` function is used to convert `MyComponent` into a custom element named 'my-element'.
import { Injector, NgModule } from '@angular/core';
import { createCustomElement } from '@angular/elements';
import { BrowserModule } from '@angular/platform-browser';
import { MyComponent } from './my-component.component';
@NgModule({
declarations: [MyComponent],
imports: [BrowserModule],
entryComponents: [MyComponent]
})
export class AppModule {
constructor(private injector: Injector) {
const myElement = createCustomElement(MyComponent, { injector });
customElements.define('my-element', myElement);
}
ngDoBootstrap() {}
}
Using the Custom Element in HTML
Once the Angular component is converted into a custom element, it can be used in any HTML file just like a standard HTML element. This example shows how to include and use the custom element 'my-element' in an HTML file.
<!DOCTYPE html>
<html>
<head>
<title>Angular Element</title>
<script src="path/to/your/angular-element.js"></script>
</head>
<body>
<my-element></my-element>
</body>
</html>
Other packages similar to @angular/elements
stencil
Stencil is a compiler that generates Web Components (custom elements) and builds high-performance web apps. It is framework-agnostic and can be used to create reusable components that work with any major framework or no framework at all. Compared to @angular/elements, Stencil is more focused on performance and offers additional features like lazy loading and pre-rendering.
lit
Lit is a simple library for building fast, lightweight web components. It provides a minimal API to define custom elements and manage their lifecycle. Lit is known for its small size and ease of use, making it a good alternative to @angular/elements for projects that require lightweight and fast custom elements.
vue-custom-element
vue-custom-element is a Vue plugin that enables the creation of custom elements from Vue components. It allows Vue components to be used as web components in non-Vue applications. This package is similar to @angular/elements but is tailored for Vue.js, providing a seamless way to integrate Vue components as custom elements.
18.1.1 (2024-07-17)
common
| Commit | Type | Description |
| -- | -- | -- |
| a1cb9dfc0d | fix | Don't run preconnect assertion on the server. (#56213) |
compiler
| Commit | Type | Description |
| -- | -- | -- |
| daf0317bdc | fix | JIT mode incorrectly interpreting host directive configuration in partial compilation (#57002) |
| d7dca6dbb6 | fix | use strict equality for 'code' comparison (#56944) |
compiler-cli
| Commit | Type | Description |
| -- | -- | -- |
| c94a897248 | fix | avoid emitting references to typecheck files in TS 5.4 (#56961) |
core
| Commit | Type | Description |
| -- | -- | -- |
| 5682527d94 | fix | not all callbacks running when registered at the same time (#56981) |
migrations
| Commit | Type | Description |
| -- | -- | -- |
| b666d2c20f | fix | fix common module removal (#56968) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="17.3.12"></a>