无法在 viewer3D.js 中读取 null 的属性“updateMaterials”

Posted

技术标签:

【中文标题】无法在 viewer3D.js 中读取 null 的属性“updateMaterials”【英文标题】:Cannot read property 'updateMaterials' of null in viewer3D.js 【发布时间】:2018-12-25 00:07:06 【问题描述】:

尝试在 Angular2 中销毁查看器时出现类型错误。

为此我尝试了这段代码,

ngOnDestroy() 
        if (this.viewer && this.viewer.running) 
            this.viewer.tearDown();
            this.viewer.finish();
            this.viewer = null;
        
    

但出现如下错误:

TypeError: Cannot read property 'updateMaterials' of null
    at tick (viewer3D.js:27154)
    at animloop (viewer3D.js:27631)
    at ZoneDelegate.invokeTask (zone.js:356)
    at Object.onInvokeTask (node_modules/@angular/core//bundles/core.umd.js:9091)
    at ZoneDelegate.invokeTask (zone.js:355)
    at Zone.runTask (zone.js:256)
    at ZoneTask.invoke (zone.js:423)

如何使用 Angular2 解决此问题?

【问题讨论】:

this.viewer 是什么? "this.viewer" 是伪造查看器的实例。 【参考方案1】:

请查看this answer。此外,您可能还需要.impl.unloadCurrentModel()

【讨论】:

@RuhamaDavid 我尝试了您的原始代码,并且工作正常。我猜您的 Angular 代码仍在尝试访问查看器并导致此错误(渲染时发生 updateMaterials)。另一个答案建议当您在 SPA 上的状态/页面之间导航时保​​持查看器运行。

以上是关于无法在 viewer3D.js 中读取 null 的属性“updateMaterials”的主要内容,如果未能解决你的问题,请参考以下文章

Vue 错误:未捕获(在承诺中)TypeError 无法读取 null 的属性(读取“地址”)

无法在引导程序 5 toast 中读取 null 的属性(读取“defaultPrevented”)

无法在 Firebase 函数中读取 null 的属性

Vue警告无法读取null的属性

TypeError:无法在反应中读取 null 的属性“名称”

无法在 ejs 文件 (node.js) 中读取 null 的属性“名称”