在ngOnInit

时间:2018-11-22 07:03:37

标签: javascript angular typescript angular-material-5

使用以下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小吃栏从套接字显示我的data.message。

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

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

不确定我在这里做错了什么吗,还有可能吗?

1 个答案:

答案 0 :(得分:3)

请改用箭头功能=>-

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

因为它没有自己的this