Create a standalone, pure pipe and define the truncation contract in `transform`. The implementation below preserves strings within the limit and counts the ellipsis as the final character. ```ts import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'truncate', standalone: true, pure: true, }) export class TruncatePipe implements PipeTransform { transform(value: string, limit = 50): string { if (limit < 1) { return ''; } return value.length <= limit ? value : `${value.slice(0, li...
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-cb3827fe)More formats (shields.io, HTML) on the badges page.
# Creating a truncate pipe
Create a standalone, pure pipe and define the truncation contract in `transform`. The implementation below preserves strings within the limit and counts the ellipsis as the final character.
```ts
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'truncate',
standalone: true,
pure: true,
})
export class TruncatePipe implements PipeTransform {
transform(value: string, limit = 50): string {
if (limit < 1) {
return '';
}
return value.length <= limit
? value
: `${value.slice(0, limit - 1)}…`;
}
}
```
Use the pipe by importing it into the standalone component that renders it:
```ts
@Component({
standalone: true,
imports: [TruncatePipe],
template: `
<p>{{ title | truncate }}</p>
<p>{{ summary | truncate: 100 }}</p>
`,
})
export class ArticleHeaderComponent {
readonly title = 'A title that may be too long for the available layout';
readonly summary = 'A longer article summary displayed in a constrained card.';
}
```
The pipe is pure, so Angular can cache its result while `value` and `limit` are unchanged. Keep this transform deterministic and use `async` for observables rather than making a static string pipe impure. If `value` may be absent, define that contract explicitly with a nullable parameter and a fallback before calling `.length`.
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!