Je travaille dessus et je ne trouve pas de moyen de gérer l'erreur renvoyée par renderer2.selectRootElement. Voici à quoi ressemble ma fonction :

private doSomeAnimation(){
 const modalWrapper = this.renderer2.selectRootElement('.modal-wrapper', true);//It fails here
 // finally do something with modalWrapper
   this.renderer2.addClass(modalWrapper, 'fade-out');
}

Et si j'ouvre la console je vois cette erreur :

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)
....

J'ai également regardé les documents pour Renderer2 et selectRootElement ressemble à ceci

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; 
}

Comme vous pouvez le voir, mon code échoue à la ligne numéro 1 de ma fonction, ma question est donc comment ne PAS afficher d'erreur dans la console s'il n'y avait aucune correspondance. Je veux dire comment ne pas afficher ce message dans la console

"The selector ".modal-wrapper" did not match any elements"

Quelqu'un peut-il m'aider ou m'orienter dans la bonne direction ? Merci beaucoup d'avance!

-1
HenryDev 16 juin 2020 à 01:48

1 réponse

Meilleure réponse

Vous pouvez envelopper l'appel dans un 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;
}
1
Alberto Rivera 15 juin 2020 à 23:12