我无法捕获viewContainerRef的createComponent
方法引起的任何错误(使用angular7):
try {
componentRef = viewContainerRef.createComponent(componentFactory);
} catch(e) {
console.log("e", e);
}
但是仍然会引发错误,并且永远不会执行catch
块。
我很确定createComponent
不会返回承诺或类似内容。
我的用例:我想处理由组件模板中未知变量引起的错误。如果没有错误,一切都会正常,但是我必须处理用户创建的模板...;)
在此先感谢您的帮助!
编辑
Stacktrace(模板包含{{ foo.bar }}
,其中foo
未定义):
TypeError: Cannot read property 'bar' of undefined
at Object.eval [as updateRenderer] (class_1.html:1)
at Object.debugUpdateRenderer [as updateRenderer] (core.js:20458)
at checkAndUpdateView (core.js:19833)
at callViewAction (core.js:20069)
at execComponentViewsAction (core.js:20011)
at checkAndUpdateView (core.js:19834)
at callViewAction (core.js:20069)
at execEmbeddedViewsAction (core.js:20032)
at checkAndUpdateView (core.js:19829)
at callViewAction (core.js:20069) undefined
信息:我尝试取消注释特定行,错误消失了。
答案 0 :(得分:0)
创建组件没有错误,这就是为什么无法在添加try/catch
的地方捕获此错误的原因。只有进入Angular生命周期后,它才开始遇到问题。
具体地说,它正在尝试访问.bar
中的undefined
。相反,您可以在模板中添加null
支票,也可以只使用?
:
{{ foo?.bar }}