diff --git a/apps/angular/10-utility-wrapper-pipe/src/app/app.component.ts b/apps/angular/10-utility-wrapper-pipe/src/app/app.component.ts index 764d4b9d0..8d6775e2b 100644 --- a/apps/angular/10-utility-wrapper-pipe/src/app/app.component.ts +++ b/apps/angular/10-utility-wrapper-pipe/src/app/app.component.ts @@ -1,17 +1,19 @@ import { NgFor } from '@angular/common'; import { Component } from '@angular/core'; import { PersonUtils } from './person.utils'; +import { UtilPipe } from './util.pipe'; @Component({ - imports: [NgFor], + standalone: true, + imports: [NgFor, UtilPipe], selector: 'app-root', template: `
{{ activity.name }} :
- {{ showName(person.name, index) }} - {{ isAllowed(person.age, isFirst, activity.minimumAge) }} + {{ 'showName' | util: person.name : index }} + {{ 'isAllowed' | util: person.age : isFirst : activity.minimumAge }}
`, diff --git a/apps/angular/10-utility-wrapper-pipe/src/app/util.pipe.ts b/apps/angular/10-utility-wrapper-pipe/src/app/util.pipe.ts new file mode 100644 index 000000000..25a29065f --- /dev/null +++ b/apps/angular/10-utility-wrapper-pipe/src/app/util.pipe.ts @@ -0,0 +1,19 @@ +import { Pipe, PipeTransform } from '@angular/core'; +import { PersonUtils } from './person.utils'; + +type PersonType = typeof PersonUtils; + +@Pipe({ + name: 'util', + standalone: true, +}) +export class UtilPipe implements PipeTransform { + transform( + utilityName: T, + ...args: Parameters + ): ReturnType { + const fn = PersonUtils[utilityName]; + // eslint-disable-next-line @typescript-eslint/ban-types + return (fn as Function)(...args); + } +}