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
为空,并且它仍然存在,但我的问题是:当我单击输入时,它不会做任何事情。如何侦听setBehaviorSubject指令中的输入?
??来处理指令中的主机元素事件,您可以使用@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
?