Angular AddEventListener-使用外部函数时未定义的方法
我有一些这样的代码:Angular AddEventListener-使用外部函数时未定义的方法,angular,ionic2,Angular,Ionic2,我有一些这样的代码: addMarkerListener(){ document.querySelector('body').addEventListener('click', (event) => (this.handleMarkerListenerClick(event))); } handleMarkerListenerClick(event){ let target = event.target as HTMLElement; if (targ
addMarkerListener(){
document.querySelector('body').addEventListener('click', (event) => (this.handleMarkerListenerClick(event)));
}
handleMarkerListenerClick(event){
let target = event.target as HTMLElement;
if (target.tagName.toLowerCase() == "a" && target.className.startsWith("ver-mais-unidade")){
this.onViewUnidade();
}
}
addMarkerListener(){
document.querySelector('body').addEventListener('click', this.handleMarkerListenerClick);
}
handleMarkerListenerClick(event){
let target = event.target as HTMLElement;
if (target.tagName.toLowerCase() == "a" && target.className.startsWith("ver-mais-unidade")){
this.onViewUnidade();
}
}
它工作得很好,但我需要稍后删除该侦听器,因此我必须像这样调用我的处理程序:
addMarkerListener(){
document.querySelector('body').addEventListener('click', (event) => (this.handleMarkerListenerClick(event)));
}
handleMarkerListenerClick(event){
let target = event.target as HTMLElement;
if (target.tagName.toLowerCase() == "a" && target.className.startsWith("ver-mais-unidade")){
this.onViewUnidade();
}
}
addMarkerListener(){
document.querySelector('body').addEventListener('click', this.handleMarkerListenerClick);
}
handleMarkerListenerClick(event){
let target = event.target as HTMLElement;
if (target.tagName.toLowerCase() == "a" && target.className.startsWith("ver-mais-unidade")){
this.onViewUnidade();
}
}
问题是,在第二个代码中,“this.onViewUnidade”是未定义的onViewUnidade
是我的组件中的一个函数,在第一种情况下运行良好。有人知道我做错了什么吗?谢谢 尝试使用
或在构造函数中:
this.handleMarkerListenerClick = this.handleMarkerListenerClick.bind(this);
但最好用像这样有角度的方式
@HostListener('document:click', ['$event'])
handleMarkerListenerClick(e) { ... }
或
试用
或在构造函数中:
this.handleMarkerListenerClick = this.handleMarkerListenerClick.bind(this);
但最好用像这样有角度的方式
@HostListener('document:click', ['$event'])
handleMarkerListenerClick(e) { ... }
或
在构造函数中,说
this.handleMarkerListenerClick=this.handleMarkerListenerClick.bind(this)
。在构造函数中,说this.handleMarkerListenerClick=this.handleMarkerListenerClick.bind(this)代码>。首先尝试了构造函数解决方案,效果非常好。非常感谢!第一次尝试构造函数解决方案,效果很好。非常感谢!