angular-elements
ALWAYS use when working with Angular Elements, web components, custom elements, or packaging Angular components for non-Angular applications.
How do I install this agent skill?
npx skills add https://github.com/oguzhan18/angular-ecosystem-skills --skill angular-elementsIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill provides standard instructions and code examples for implementing Angular Elements in Angular 21. No security risks were identified; all external resources and packages belong to the official Angular ecosystem.
- Socketpass
No alerts
- Snykpass
Risk: LOW · No issues
What does this agent skill do?
@angular/elements
Version: Angular 21 (2025) Tags: Web Components, Custom Elements, Micro-frontends
References: Elements Guide • API
API Changes
This section documents recent version-specific API changes.
-
NEW: createCustomElement API — Package Angular components as custom elements
-
NEW: NgElementConfig — Configure custom element behavior
-
NEW: Input/Output mapping — Map Angular inputs/outputs to web component attributes
-
NEW: Standalone elements — Build standalone elements without NgModule
Best Practices
- Install @angular/elements
npm install @angular/elements
- Create custom element from component
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);
}
}
- Use in 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);
});
- Map inputs and outputs
const element = createCustomElement(MyComponent, {
injector: this.injector,
events: ['myEvent'],
attributes: ['myInput']
});
- Use CUSTOM_ELEMENTS_SCHEMA
// To use custom elements in Angular
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
@NgModule({
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class AppModule {}
- Build as web component
// angular.json
{
"build": {
"options": {
"outputPath": "dist",
"singleBundle": true
}
}
}
- Use input() and output() for web component data
@Component({
selector: 'my-element',
standalone: true
})
export class MyElementComponent {
data = input<string>('');
output = output<string>();
onClick() {
this.output.emit('event-data');
}
}
- Handle content projection
@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 {}
- Use for micro-frontends
// Register multiple elements
const elements = [ButtonComponent, CardComponent, InputComponent];
elements.forEach(comp => {
const el = createCustomElement(comp, { injector });
customElements.define(comp.selector, el);
});
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/oguzhan18/angular-ecosystem-skills/angular-elements">View angular-elements on skillZs</a>