javascript - 如何处理 Angular 中 render2 抛出的错误?
问题描述
我正在解决这个问题,想不出一种方法来处理renderer2.selectRootElement引发的错误。这就是我的函数的样子:
private doSomeAnimation(){
const modalWrapper = this.renderer2.selectRootElement('.modal-wrapper', true);//It fails here
// finally do something with modalWrapper
this.renderer2.addClass(modalWrapper, 'fade-out');
}
如果我打开控制台,我会看到这个错误:
global-angular-error-handler.service.ts:49 Error: The selector ".modal-wrapper" did not match any elements
at DefaultDomRenderer2.selectRootElement (dom_renderer.ts:146)
at BaseAnimationRenderer.selectRootElement (animation_renderer.ts:156)
at DebugRenderer2.selectRootElement (services.ts:762)
at ModalComponent.animateClosing (modal.component.ts:39)
....
我还查看了 Renderer2 的文档,并且selectRootElement看起来像这样
selectRootElement(selectOrNode: string|any):any{
let el: any = typeof selectOrNode === 'string'? document.querySelector(selectOrNode) : selectOrNode;
if(!el){
throw new Error(`The selector "${selectorOrNode}" did not match any elements`);
}
el.textContent = '';
return el;
}
如您所见,我的代码在函数的第 1 行失败,所以我的问题是如果没有任何匹配项,如何在控制台中不显示任何错误。我的意思是如何不在控制台中显示此消息
"The selector ".modal-wrapper" did not match any elements"
有人可以帮助我或指出正确的方向吗?提前非常感谢!
解决方案
您可以将调用包装成 try/catch
let modalWrapper;
try {
modalWrapper = this.renderer2.selectRootElement('.modal-wrapper', true);
} catch (e) {
// do what you need to do with the exception here.
return;
}
推荐阅读
- opencart - Opencart 搜索没有完整字符串的产品型号
- fullcalendar - 仅在 dayGridMonth 中显示描述
- python - 设备类型为 cuda 的预期对象,但获得了设备类型 cpu
- python - 在 TensorFlow2.0.0 中创建自定义激活
- reactjs - 当redux store中的值发生变化时,如何更新formik中的特定表单字段?
- javascript - HTML 和 Javascript 表单无法在较小的屏幕上提交
- performance - 将 ansible 任务经过的时间打印到日志文件中
- spring-boot - 如何为哨兵配置分析?
- javascript - 在javascript中获取具有嵌套Json值的声明常量数组
- angular - Npm 传递依赖 - 不是最新版本