Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.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 在ngOnInit中调用函数时使用Angular5类型脚本_Javascript_Angular_Typescript_Angular Material 5 - Fatal编程技术网

Javascript 在ngOnInit中调用函数时使用Angular5类型脚本

Javascript 在ngOnInit中调用函数时使用Angular5类型脚本,javascript,angular,typescript,angular-material-5,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.

以下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");
});

因为,它没有自己的
这个

使用一个胖箭头函数进行回调。工作得很好