出现“无法读取未定义属性'setImmediate'的类型错误”通常是由于在使用Angular9 DHX Spreadsheet时缺少必要的依赖项或配置错误导致的。以下是一些可能的解决方法:
npm install dhtmlx-spreadsheet-pro
命令以安装DHX Spreadsheet。angular.json
文件的scripts
数组中引入了相关的dhtmlx样式文件和脚本文件:"scripts": [
"node_modules/dhtmlx-spreadsheet-pro/codebase/spreadsheet.js",
"node_modules/dhtmlx-spreadsheet-pro/codebase/spreadsheet.css"
]
dhxSpreadsheet
模块:import { Component, ViewChild, AfterViewInit } from '@angular/core';
import { DhxSpreadsheetComponent } from 'dhx-angular';
@Component({
selector: 'app-spreadsheet',
template: ' '
})
export class SpreadsheetComponent implements AfterViewInit {
@ViewChild('spreadsheet', { static: false }) spreadsheet: DhxSpreadsheetComponent;
ngAfterViewInit() {
this.spreadsheet.detail_setImmediate = (callback: any) => {
setTimeout(callback, 0);
};
this.spreadsheet.detail_clearImmediate = (id: any) => {
clearTimeout(id);
};
this.spreadsheet.detail_setTimeout = (handler: any, timeout?: any) => {
return timeout ? setTimeout(handler, timeout) : setTimeout(handler);
};
this.spreadsheet.detail_clearTimeout = (id: any) => {
clearTimeout(id);
};
this.spreadsheet.detail_requestAnimationFrame = (callback: any) => {
return requestAnimationFrame(callback);
};
this.spreadsheet.detail_cancelAnimationFrame = (id: any) => {
cancelAnimationFrame(id);
};
}
}
请注意,DHX Spreadsheet是一个商业产品,您需要购买许可证才能在生产环境中使用它。以上解决方法假设您已正确购买和配置了DHX Spreadsheet。