Promise中出现Cannot read properties of undefined(reading 'remove')错误求助
问题分析与解决
错误原因
报错ERROR Error: Uncaught (in promise): TypeError: Cannot read properties of undefined (reading 'remove')的核心是:调用removeClass时,this.renderer为undefined,导致无法读取它关联的remove相关方法。
常见遗漏点及修复方案
Promise回调中
this指向丢失
在Promise的then/catch回调里,普通函数会改变this指向,使其不再指向组件实例,进而找不到this.renderer。
修复方式二选一:- 使用箭头函数(自动绑定当前组件的
this):somePromise().then(() => { const rootElem = view.rootNodes[0]; if (rootElem) { this.renderer.removeClass(rootElem, 'disabled'); } }) - 提前保存当前
this的引用:const self = this; somePromise().then(function() { const rootElem = view.rootNodes[0]; if (rootElem) { self.renderer.removeClass(rootElem, 'disabled'); } })
- 使用箭头函数(自动绑定当前组件的
Renderer未正确注入(针对Angular场景)
如果是Angular项目,Renderer2必须通过组件构造函数注入,否则this.renderer会是undefined。检查构造函数是否包含如下代码:constructor(private renderer: Renderer2) {}额外防御性判断
可以给this.renderer也加一层判断,避免意外报错:const rootElem = view.rootNodes[0]; if (rootElem && this.renderer) { this.renderer.removeClass(rootElem, 'disabled'); }
内容的提问来源于stack exchange,提问作者Govardhan
相关产品推荐
相关产品推荐

