如何处理 Angular 中 render2 抛出的错误?

How to handle errors thrown by render2 in Angular?

我正在研究这个,想不出一种方法来处理 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;
}