Javascript 无法从eventhandler调用服务
在ngOnInit()中,我正在初始化一个事件Javascript 无法从eventhandler调用服务,javascript,angular,Javascript,Angular,在ngOnInit()中,我正在初始化一个事件 if (!window.addEventListener) { this.window.attachEvent('onmessage', this.eventHandler.bind(null, this.router)); } else { window.addEventListener('message', this.eventHandler.bind(null, this.router), false); } 在如下所
if (!window.addEventListener)
{
this.window.attachEvent('onmessage', this.eventHandler.bind(null, this.router));
}
else
{
window.addEventListener('message', this.eventHandler.bind(null, this.router), false);
}
在如下所示的eventHandler中,我尝试调用服务,但没有调用该服务
eventHandler = function (router, e)
{
if (response.type === "PAGE_LOAD" && response.data.pageName === "DOC")
{
this.BuilderService.deleteUser(this.filter).subscribe(data => this.success(),(err) => this.handleError(err.statusText));
}
}
你能帮我解决这个问题吗?函数中的
这个
的值通常由函数的调用定义。因此,在您的例子中,您可以使用Function.prototype.bind
将设置为null
事件处理程序中的此
为null,因此this.BuilderService.deleteUser==null.BuilderService.deleteUser<代码>删除用户
永远不会被调用,但会出现一些错误
要修复错误,需要设置正确的
此
值,这是角度组件类本身。所以只需将this.eventHandler.bind(null,this.router),false)
更改为this.eventHandler.bind(this,this.router),false)
您是否尝试将断点设置为eventHandler
以查看是否调用了它?您是否可能在ngOnInit
之后执行赋值eventHandler=函数(router,e)
?在服务调用未触发但页面导航正在工作的情况下,如果(response.type==“PAGE_LOAD”&&response.data.pageName==“DOC”),则事件为GetSign hit,调用进入if块。导航(['Builder/Dashboard'];调用的是this.BuilderService.deleteUser(this.filter)
吗?是否使用调试器进入该函数?否请使用this.BuilderService.deleteUser(this.filter)未调用。它命中了该行代码,但该调用未发生。您是否在控制台中遇到错误。此
的值是多少?服务调用未启动,但页面导航正在运行。导航(['Builder/Dashboard']);那么,我应该怎么做才能使服务调用触发eventhandler路由器内部不允许任何函数调用。navigate
工作,因为您将正确的路由器对象传递给了eventhandler。在eventhander内部,此
为null,但路由器不是。它是中带有navigate
方法的实际路由器实例谢谢你,它起作用了