Tengo una directiva que se usa en los campos de entrada de mi formulario. Estoy tratando de obtener el valor de esa directiva en mi archivo TS
Directiva
@Directive({ selector: '[appOskInput]', }) export class OskInputDirective implements OnInit { private isBlurTrue: boolean = false; @HostListener('focus') private onFocus() { console.log("focus"); this.isBlurTrue = false; this.keyboard.fireKeyboardRequested(true); this.subscribeToKeyboardEvents(); } @HostListener("onBlur") private onBlur() { console.log("blur"); this.isBlurTrue = true; this.keyboard.fireKeyboardRequested(false); this.unsubscribeFromKeyboardEvents(); } }HTML
<cb-form [formGroup]="setupForm"> <form-input appOskInput (inputChanged)="onInputChanged($event,'accountNumber')" [formStatus]="formStatus" [parentFormGroup]="setupForm" [data]="{formControlName: 'accountNumber', name: 'accountNumber'}"> </form-input> </cb-form> Básicamente, quiero usar el valor isBlurTrue en mi archivo TS. Alguien sabe como puedo hacer esto?
me lo imaginé
Acabo de pasar un evento de salida en la directiva
@Output() blurChanged = new EventEmitter();Luego emitió el valor a la misma
this.blurChanged.emit(this.isBlurTrue);en mi html
yo añadí
(blurChanged)="onBlurChanged($event)"Y en mi TS agregué
onBlurChanged(ev) { console.log(ev) }También podría tener una función public dentro de su directiva donde expone su propiedad private y luego usarla en su plantilla html desde un control principal como este:
Directiva
... private isBlurTrue: boolean = false; getBlur(): boolean { return this.isBlurTrue; }HTML
<div #myDirective="appOskInput"> ... <input (blur)="myDirective.getBlur()"/> ... </div>