在 ngOnInit 中调用函数时的 Angular5 打字稿

Angular5 typescript when calling a function within ngOnInit

使用以下 Angular5 代码时遇到问题:

constructor(protected snackBar: MatSnackBar) {}

openSnackBar(message: string, action: string) {
    this.snackBar.open(message, action, {
      duration: 2000,
    });
}    

ngOnInit() {        
    const socket = io();
    socket.on('notification', function (data) {  
        this.openSnackBar(data.message,"Undo");
    });
}

根据我的端点何时调用 websocket(使用 socket.io),一切正常,我想使用 Angular Material snackbar 从套接字显示我的 data.message。

很遗憾,我收到以下错误:

ERROR TypeError: "this.openSnackBar is not a function"

不确定我做错了什么,上面的可能吗?

改用箭头函数=> -

socket.on('notification', (data) => {  
    this.openSnackBar(data.message,"Undo");
});

因为,它没有自己的this