Javascript 角度2-无法从信号器范围访问组件成员/方法
我正在尝试将信号器(外部加载的脚本)与angular 2组件一起使用,但面临有线问题。我的函数在typescript中被调用,并带有我从WebAPI传递的正确信息,但在这些typescript函数中,我不能使用任何声明的属性或函数 通过我的WebAPI,我通知客户Javascript 角度2-无法从信号器范围访问组件成员/方法,javascript,angular,typescript,signalr,signalr-hub,Javascript,Angular,Typescript,Signalr,Signalr Hub,我正在尝试将信号器(外部加载的脚本)与angular 2组件一起使用,但面临有线问题。我的函数在typescript中被调用,并带有我从WebAPI传递的正确信息,但在这些typescript函数中,我不能使用任何声明的属性或函数 通过我的WebAPI,我通知客户 IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<CarBidHub>(); hubContext.Clients.All.Notify
IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<CarBidHub>();
hubContext.Clients.All.NotifyManager_BidPlaced(message);
我试着打过电话
//call start hub method
this.startHub();
来自ngAfterViewInit、OnInit和组件的构造函数,但都不起作用
我可以猜到问题是signar的接收器是在typescript函数中定义的,因此在外部调用时可能没有正确的上下文
是否有一种方法可以从该站点访问已声明的成员
NotifyManager\u bidplacted函数
很多例子都有相同的问题。根据经验,不要在类中使用
函数
关键字。这将用当前功能范围的上下文替换此上下文。始终使用()=>{}
符号:
private startHub(): void {
jQuery.connection.hub.logging = false;
hub.client.NotifyManager_BidPlaced = (message:string) => { //here
this.notificationService.success('Information', message);
};
jQuery.connection.hub.start();
}
工作得很有魅力!我从来不知道它通过使用function关键字改变了作用域,谢谢:)
private startHub(): void {
jQuery.connection.hub.logging = false;
hub.client.NotifyManager_BidPlaced = (message:string) => { //here
this.notificationService.success('Information', message);
};
jQuery.connection.hub.start();
}