2
respostas

[Dúvida] Entendendo ReuseStrategy...

Segui os passos para a atualização de métodos depreciados e percebi que, na classe CustomReuseStrategy, a informação de future.data['reuseComponent'] é undefined. Isso deveria estar acontecendo ou eu fiz algo errado? Se deveria estar acontecendo o comportamento está sendo definido para todas as rotas? Faz diferença eu definir reuseComponent em alguma rota?

2 respostas

Olá!

A questão que você levantou é comum ao lidar com estratégias de reutilização de rotas no Angular, especialmente quando se está atualizando métodos depreciados ou configurando comportamentos específicos para rotas.

A CustomReuseStrategy é uma maneira avançada de gerenciar como os componentes são reutilizados entre as navegações de rotas.

  1. future.data['reuseComponent'] está undefined:

    • Isso indica que a propriedade reuseComponent não foi definida nas rotas.
    • Veja você está adicionando esta propriedade no objeto data da configuração da rota.
      const routes: Routes = [
        {
          path: 'example',
          component: ExampleComponent,
          data: { reuseComponent: true }
        }
      ];
      
  2. Comportamento para todas as rotas:

    • Se reuseComponent está undefined, a sua estratégia personalizada (CustomReuseStrategy) pode estar assumindo um valor padrão. Verifique a implementação da estratégia para ver se há um valor padrão sendo usado quando reuseComponent está undefined.
    • Para garantir um comportamento consistente, você pode definir explicitamente reuseComponent para todas as rotas que deseja controlar.
  3. Definir reuseComponent em alguma rota faz diferença:

    • Sim, faz diferença. A propriedade reuseComponent permite que você controle especificamente quais componentes devem ser reutilizados e quais não devem. Isso pode ser importante para otimização de performance e para garantir que o estado do componente seja mantido ou redefinido conforme necessário.

Se ainda estiver tendo problemas, pode compartilhar mais detalhes sobre como você está definindo suas rotas e como implementou a CustomReuseStrategy para uma análise melhor;

Resolvi!

Usar future não me dava acesso direto a rota ativa. Consegui fazer isso utilizando future.firstChild, o que me permitiu chegar ao data['reuseComponent'].