
Angular Components
- 179 installs
- 6 repo stars
- Updated April 4, 2026
- oguzhan18/angular-ecosystem-skills
Build standalone Angular components with inputs, outputs, content projection, and change detection aligned to modern Angular style.
About
Angular-components skill encodes ecosystem conventions for standalone components, typed inputs/outputs, projection, and performance-aware change detection so agents scaffold maintainable Angular UIs for enterprise SaaS and hybrid apps.
- Standalone component setup
- Input and output contracts
- Content projection slots
- Change detection strategy
- Composable UI architecture
Angular Components by the numbers
- 179 all-time installs (skills.sh)
- +1 installs in the week ending Aug 4, 2026 (Skillselion tracking)
- Ranked #897 of 2,245 Frontend Development skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/oguzhan18/angular-ecosystem-skills --skill angular-componentsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 179 |
|---|---|
| repo stars | ★ 6 |
| Last updated | April 4, 2026 |
| Repository | oguzhan18/angular-ecosystem-skills ↗ |
What it does
Build standalone Angular components with inputs, outputs, content projection, and change detection aligned to modern Angular style.
Files
Angular Components
Version: Angular 21 (2025) Tags: Components, @Component, Architecture
References: Components Guide • @Component API
Best Practices
- Create standalone component
@Component({
standalone: true,
selector: 'app-my',
imports: [CommonModule],
template: `<p>Content</p>`
})
export class MyComponent {}- Use inputs with signals
@Component({})
export class MyComponent {
data = input<string>('');
required = input.required<User>();
computed = computed(() => this.data()?.name);
}- Use outputs for events
@Component({})
export class MyComponent {
data = output<string>();
onClick() {
this.data.emit('event');
}
}- Use template reference variables
@Component({
template: `
<input #nameInput>
<button (click)="onSubmit(nameInput.value)">Submit</button>
`
})
export class MyComponent {}- Use content projection
@Component({
selector: 'app-card',
template: `
<div class="header">
<ng-content select="[header]"></ng-content>
</div>
<div class="body">
<ng-content></ng-content>
</div>
`
})
export class CardComponent {}- Use change detection strategy
@Component({
changeDetection: ChangeDetectionStrategy.OnPush
})
export class OptimizedComponent {}- Use encapsulation
@Component({
encapsulation: ViewEncapsulation.None // or Emulated, ShadowDom
})
export class StyledComponent {}- Use host binding
@Component({
host: {
'[class.active]': 'isActive',
'(click)': 'onClick()'
}
})
export class HostComponent {
isActive = false;
}