From 765c860795f279b12822a55a219d0a9e62db457c Mon Sep 17 00:00:00 2001 From: Tim Bowersox <11789189+t-bowersox@users.noreply.github.com> Date: Thu, 20 Jan 2022 20:26:31 -0500 Subject: [PATCH] docs: restore UniqueAlterEgoValidator (#44764) Update the docregion for the directive class to differentiate them PR Close #44764 --- .../src/app/shared/alter-ego.directive.ts | 40 +++++++++++++------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/aio/content/examples/form-validation/src/app/shared/alter-ego.directive.ts b/aio/content/examples/form-validation/src/app/shared/alter-ego.directive.ts index 88e16de7d9f..2aeedc9ed63 100644 --- a/aio/content/examples/form-validation/src/app/shared/alter-ego.directive.ts +++ b/aio/content/examples/form-validation/src/app/shared/alter-ego.directive.ts @@ -10,19 +10,8 @@ import { HeroesService } from './heroes.service'; import { Observable, of } from 'rxjs'; // #docregion async-validator -// #docregion async-validator-directive -@Directive({ - selector: '[appUniqueAlterEgo]', - providers: [ - { - provide: NG_ASYNC_VALIDATORS, - useExisting: forwardRef(() => UniqueAlterEgoValidatorDirective), - multi: true - } - ] -}) -// #enddocregion async-validator-directive -export class UniqueAlterEgoValidatorDirective implements AsyncValidator { +@Injectable({ providedIn: 'root' }) +export class UniqueAlterEgoValidator implements AsyncValidator { constructor(private heroesService: HeroesService) {} validate( @@ -35,3 +24,28 @@ export class UniqueAlterEgoValidatorDirective implements AsyncValidator { } } // #enddocregion async-validator + +// #docregion async-validator-directive +@Directive({ + selector: '[appUniqueAlterEgo]', + providers: [ + { + provide: NG_ASYNC_VALIDATORS, + useExisting: forwardRef(() => UniqueAlterEgoValidatorDirective), + multi: true + } + ] +}) +export class UniqueAlterEgoValidatorDirective implements AsyncValidator { + constructor(private heroesService: HeroesService) {} + + validate( + control: AbstractControl + ): Observable { + return this.heroesService.isAlterEgoTaken(control.value).pipe( + map(isTaken => (isTaken ? { uniqueAlterEgo: true } : null)), + catchError(() => of(null)) + ); + } +} +// #enddocregion async-validator-directive