`hostDirectives` applies a standalone directive to a component or another directive, so the host gets the behavior without inheritance. Inputs and outputs are private to the host by default; expose the ones that should be part of the host component's API. ```ts import { Component, Directive, input, output } from '@angular/core'; @Directive({ selector: '[appTooltip]', standalone: true, host: { '[attr.title]': 'text()', '[attr.aria-label]': 'text()', '(mouseenter)': 'show()', '(mouseleave)': 'h...
Scanned 9/5/2026
Install to Claude Code
npx -y skills add HoangNguyen0403/agent-skills-standard --skill angular-directives-pipes --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Angular Directives Pipes?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/hoangnguyen0403-angular-directives-pipes-7e4b7919)More formats (shields.io, HTML) on the badges page.
# Composing behavior with `hostDirectives`
`hostDirectives` applies a standalone directive to a component or another directive, so the host gets the behavior without inheritance. Inputs and outputs are private to the host by default; expose the ones that should be part of the host component's API.
```ts
import { Component, Directive, input, output } from '@angular/core';
@Directive({
selector: '[appTooltip]',
standalone: true,
host: {
'[attr.title]': 'text()',
'[attr.aria-label]': 'text()',
'(mouseenter)': 'show()',
'(mouseleave)': 'hide()',
'(focusin)': 'show()',
'(focusout)': 'hide()',
},
})
export class TooltipDirective {
readonly text = input('');
readonly shown = output<void>();
readonly hidden = output<void>();
show(): void {
this.shown.emit();
}
hide(): void {
this.hidden.emit();
}
}
@Component({
selector: 'app-button',
standalone: true,
template: `<button type="button"><ng-content /></button>`,
hostDirectives: [
{
directive: TooltipDirective,
inputs: ['text'],
outputs: ['shown', 'hidden'],
},
],
})
export class ButtonComponent {}
```
Consumers can now use the exposed directive API on the component host:
```html
<app-button
text="Save changes"
(shown)="announceTooltip()"
(hidden)="clearAnnouncement()"
>
Save
</app-button>
```
The tooltip directive remains reusable, while `ButtonComponent` composes it declaratively. If the host's public property should have a different name, expose an alias in the `inputs` mapping supported by the Angular version in use; keep the directive itself independent of that component API.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!