import { Directive, HostListener, Input } from '@angular/core'; import { KeySet, ForbiddenInput } from './classes'; import { invalidInputError } from './exceptions'; @Directive({ selector: '[ang-forbidden]' }) export class ForbiddenDirective { @Input('ang-forbidden') forbiddenKeys: KeySet; @HostListener('keydown', ['$event']) whileTyping(e: KeyboardEvent){ if(!(this.forbiddenKeys instanceof KeySet)){ invalidInputError(); } const forbidden = this.forbiddenKeys.has(e.key); if(forbidden){ !e.repeat && this.forbiddenKeys.forbiddenInput.next(new ForbiddenInput(e)); return false; } } }