Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.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
Angular SpreadJS事件绑定中没有引发异常_Angular_Spreadjs - Fatal编程技术网

Angular SpreadJS事件绑定中没有引发异常

Angular SpreadJS事件绑定中没有引发异常,angular,spreadjs,Angular,Spreadjs,首先,我不确定这是角度问题还是ES6问题 在应用程序的重构过程中,我们将一个方法提取到另一个文件中,这样做会导致以下错误: export const setDataTypeToColumn=( 罗:任何, 上校:有吗 ) => { const updates=this.getChanges().updateTables; //这里有一些代码 } this.getChanges()是我们在重构之前使用的主文件中的一个方法,但是在这个新文件中它不存在,在所描述的箭头函数中也不存在。 然而,当调用s

首先,我不确定这是角度问题还是ES6问题

在应用程序的重构过程中,我们将一个方法提取到另一个文件中,这样做会导致以下错误:

export const setDataTypeToColumn=(
罗:任何,
上校:有吗
) => {
const updates=this.getChanges().updateTables;
//这里有一些代码
}
this.getChanges()
是我们在重构之前使用的主文件中的一个方法,但是在这个新文件中它不存在,在所描述的箭头函数中也不存在。 然而,当调用
setDataTypeToColumn(x,y)
时,我们没有得到任何控制台错误。应用程序以静默方式失败,更糟糕的是,后续代码最终无法执行

只有在调用setDataType时,我使用try..catch环绕调用,在那里我会得到异常错误:

TypeError: _this.getChanges is not a function
    at Object.push../src/app/components/model-structure/validators.ts.exports.setDataTypeToColumn (validators.ts:120)
    at SetupComponent.push../src/app/components/model-structure/ .......
有没有办法配置我的环境(linter、编译器、angular本身)来捕获这些异常,而不必到处用try/catch子句垃圾邮件发送我的代码


感谢您的回答,并对新手问题表示歉意

我发现此问题是由于使用Grapecity的SpreadJS库造成的

在事件绑定回调中引发的任何异常都将被库捕获,不会显示在控制台中,也不会在回调函数之外对您可用

一个简单的例子:

//单元格更改时触发
this.sheet.bind(GC.Spread.Sheets.Events.CellChanged,(event,info)=>{
此变量未定义=0;
});
这不会在执行时引起任何错误,而且显然是由IDE和编译器识别的。更复杂的情况可能很容易找到,就像最初发布的情况一样:我们从函数内部调用了
setDataTypeToColumn
,但从未得到异常。 在函数外部使用try/catch子句也不会改变结果

您需要在回调函数中放置一个try/catch,以便处理其中抛出的任何可能的异常:

//单元格更改时触发
this.sheet.bind(GC.Spread.Sheets.Events.CellChanged,(event,info)=>{
试一试{
此变量未定义=0;
}捕捉(错误){
控制台错误(err);
}
});
此代码将正确地将异常记录到控制台,或允许您准备好处理错误

example.component.ts:386 ReferenceError:thisvariableisnotdefined未定义
在HTMLInputElement。(例如,组件ts:350)
在HTMLInputElement.j(gc.spread.sheets.all.min.js:25)
在J.trigger(gc.spread.sheets.all.min.js:26)
在na.Wq(gc.spread.sheets.all.min.js:30)
在na.Bq(gc.spread.sheets.all.min.js:30)
在T.setValue下(gc.spread.sheets.all.min.js:29)
在T.do(gc.spread.sheets.all.min.js:29)
在na.uq(gc.spread.sheets.all.min.js:29)
在na.setValue(gc.spread.sheets.all.min.js:29)

运行生成--prod时会发生什么?它失败了吗?在那个阶段没有错误。我们甚至在CI下有整个项目来尝试并捕获尽可能多的这些错误,这使得这个问题更加恼人/难以调试,因为从外部看,代码看起来是正确的。如果您意识到了这一点,这意味着您已经对您的CLI/TS配置做了一些事情。。。你能提供一份详细的报告吗?根据经验,我从未见过编译器接受这种错误……我认为我已经将问题归结为项目正在使用的一个库,它正在吞噬这些异常。因为我是这个项目的新手,我认为这与NG如何处理异常有关,但不是。在OnInit中调用该方法,异常会如预期的那样显示在控制台中。我会尽快更新这篇文章的。你最好再问一个问题,这篇文章现在被埋葬了!