Javascript 单击输入或关注该输入时更改行为主体

Javascript 单击输入或关注该输入时更改行为主体,javascript,angular,typescript,Javascript,Angular,Typescript,我有一个输入指令。我需要在单击或关注该组件时,向其他组件发送一个标志 @Directive({ selector: '[appDatepicker]' }) export class DatepickerDirective implements DoCheck{ constructor(private el: ElementRef, private transport: TransportData<boolean>) { } ngDoCheck(): void

我有一个输入指令。我需要在单击或关注该组件时,向其他组件发送一个标志

@Directive({
  selector: '[appDatepicker]'
})
export class DatepickerDirective implements DoCheck{

  constructor(private el: ElementRef, private transport: TransportData<boolean>) {

  }

  ngDoCheck(): void {
    let element = this.el.nativeElement;
    if (element.onfocus !== null || element.onclick !== null) {
      this.transport.setListValue(true);
    } else {
      this.transport.setListValue(false);
    }
  }
}
@指令({
选择器:“[appDatepicker]”
})
导出类DatepickerDirective实现DoCheck{
构造函数(专用el:ElementRef,专用传输:传输数据){
}
ngDoCheck():void{
设元素=this.el.nativeElement;
if(element.onfocus!==null | | element.onclick!==null){
this.transport.setListValue(true);
}否则{
this.transport.setListValue(false);
}
}
}
这是我的意见

<input appDatepicker>


当页面加载时,属性
onfocus
onclick
为空,并且它仍然存在,但我的问题是:当我单击输入时,它不会做任何事情。如何侦听set
BehaviorSubject指令中的输入?
??
来处理指令中的主机元素事件,您可以使用
@HostListener

@HostListener('focus',['$event']))
焦点(事件){
console.log(“获得焦点”);
}
@HostListener('单击',['$event']))
单击(事件){
console.log('clicked!');
}
@HostListener('blur',['$event']))
模糊(事件){
console.log(“失去焦点”);
}
演示:

发出事件

如果愿意,您也可以从该指令发出自己的事件

指令1.ts

@Output()myfocus:EventEmitter=neweventemitter();
@HostListener('焦点',['$event']))
焦点(事件){
this.myfocus.emit();
}
component.html



您的问题似乎缺少一些代码。你能发布所有相关代码吗。@KurtHamilton这是所有代码什么是
TransportData