Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.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 canvas.getZoom()在Angular8中未使用fabricjs定义_Javascript_Angular_Typescript_Angular8 - Fatal编程技术网

Javascript canvas.getZoom()在Angular8中未使用fabricjs定义

Javascript canvas.getZoom()在Angular8中未使用fabricjs定义,javascript,angular,typescript,angular8,Javascript,Angular,Typescript,Angular8,我在Angular 8和鼠标滚轮事件中使用fabricjs,我想缩放画布。但是,当事件被触发时,我得到了关于函数的错误,canvas.getZoom()是未定义的。我已经搜索过了,但没有找到任何与此问题相关的内容。我在fabricjs中的其他功能正在运行,但这不是 这是我的密码: this.canvas.on('mouse:wheel', function(opt) { var delta = opt.e.deltaY; console.log("delta",delta)

我在Angular 8和鼠标滚轮事件中使用
fabricjs
,我想缩放画布。但是,当事件被触发时,我得到了关于函数的错误,
canvas.getZoom()
未定义的
。我已经搜索过了,但没有找到任何与此问题相关的内容。我在
fabricjs
中的其他功能正在运行,但这不是

这是我的密码:

  this.canvas.on('mouse:wheel', function(opt) {
    var delta = opt.e.deltaY;
    console.log("delta",delta)
    var zoom = this.canvas.getZoom();
    console.log("zoom",zoom)
    zoom = zoom + delta/200;
    if (zoom > 20) zoom = 20;
    if (zoom < 0.01) zoom = 0.01;
    this.canvas.setZoom(zoom);
    opt.e.preventDefault();
    opt.e.stopPropagation();
})
this.canvas.on('mouse:wheel',函数(opt){
var delta=选择e deltaY;
console.log(“delta”,delta)
var zoom=this.canvas.getZoom();
console.log(“缩放”,缩放)
缩放=缩放+增量/200;
如果(缩放>20)缩放=20;
如果(缩放<0.01)缩放=0.01;
this.canvas.setZoom(缩放);
opt.e.preventDefault();
选择e.停止播放();
})

它在控制台上以delta的值打印,但在激发
this.canvas.getZoom()
后,它会抛出错误。

函数中的此
是函数本身,而不是组件。您可以尝试在该函数外部声明一个
self=this
,然后使用
self.canvas.getZoom()
我使用的是Angular 8,“this”是对canvas全局变量的引用。self在类型“Window&typeof globalThis”上不存在,那么如果函数内部是画布本身,请使用
this.getZoom()
这可能会有所帮助