Javascript 角度2-无法从信号器范围访问组件成员/方法

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

我正在尝试将信号器(外部加载的脚本)与angular 2组件一起使用,但面临有线问题。我的函数在typescript中被调用,并带有我从WebAPI传递的正确信息,但在这些typescript函数中,我不能使用任何声明的属性或函数

通过我的WebAPI,我通知客户

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();
}