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.
19.1.3 (2025-01-22)
compiler
| Commit | Type | Description |
| -- | -- | -- |
| ecfb74d287 | fix | handle :host-context with comma-separated child selector (#59276) |
compiler-cli
| Commit | Type | Description |
| -- | -- | -- |
| 53160e504d | fix | extract parenthesized dependencies during HMR (#59644) |
| 39690969af | fix | handle conditional expressions when extracting dependencies (#59637) |
| 78af7a5059 | fix | handle new expressions when extracting dependencies (#59637) |
core
| Commit | Type | Description |
| -- | -- | -- |
| 408af24ff3 | fix | capture self-referencing component during HMR (#59644) |
| d7575c201c | fix | replace metadata in place during HMR (#59644) |
| 26f6d4c485 | fix | skip component ID collision warning during SSR (#59625) |
migrations
| Commit | Type | Description |
| -- | -- | -- |
| a62c84bc18 | fix | avoid applying the same replacements twice when cleaning up unused imports (#59656) |
platform-browser
| Commit | Type | Description |
| -- | -- | -- |
| b2b3816cb1 | fix | clear renderer cache during HMR when using async animations (#59644) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.1.2"></a>