Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法从eventhandler调用服务_Javascript_Angular - Fatal编程技术网

Javascript 无法从eventhandler调用服务

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); } 在如下所

在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);
}
在如下所示的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
方法的实际路由器实例谢谢你,它起作用了