Roteamento Dinâmico Angular

Foto de Bruno Kelzer no Unsplash

A esta altura, você já deve ter ouvido falar sobre os Componentes Dinâmicos que são super úteis para criar aplicações mais dinâmicas. Eles nos permitem carregar componentes dinamicamente em tempo de execução, dependendo de alguma lógica personalizada, sem ter que criar um componente que esteja sobrecarregado com cargas de ngIfs.

Se você ainda não ouviu falar sobre Componentes Dinâmicos, sugiro que assista a esta palestra de Shmuela Jacobs no Angular Connect:

No meu trabalho diário, estou construindo um sistema que é como um CRM gerenciando vários produtos diferentes, todos com uma parte central comum, mas também algumas coisas específicas do produto. Para tornar os componentes mais reutilizáveis, introduzi componentes dinâmicos aqui e ali, que carregam o componente específico do produto correto, dependendo de um InjectionToken que especifica o produto ativo atual. Tudo estava bom e bom, até que tentei refatorar um fluxo de etapas que tem algumas etapas comuns, mas também algumas etapas específicas do produto. Isso foi um problema porque o fluxo de etapas não é apenas baseado em componentes, mas também depende de rotas. Ou seja, o step-flow de um produto pode ter algumas etapas adicionais, ou seja, rotas, que são diferentes das demais. O número de etapas também pode variar.

Uma solução suja seria criar um número fixo de rotas denominadas: step1, step2, step3 e, em seguida, carregar o componente dinamicamente em cada etapa, mas como o número de etapas varia, isso não é possível. A solução certa é usar o roteamento dinâmico .

Normalmente definimos as rotas de um módulo de forma muito estática em um módulo de roteamento como este:

Uma vez que o módulo é carregado não há lógica que possa interferir na atribuição estática das rotas, então sempre haverá a rota inicial e nada mais.

Exemplo

Vejamos um exemplo bem simplificado que pode não fazer muito sentido, mas tem o objetivo de demonstrar como o roteamento dinâmico funciona:

Queremos criar uma aplicação com as seguintes rotas:

  • Início (estático)
  • 404 Não encontrado (estático)
  • Dia (dinâmico; disponível apenas entre 6h e 18h)
  • Noite (dinâmico; disponível apenas entre 18h e 6h)
  • Segredo (dinâmico; chance de 50/50)

Agora que definimos nossas rotas na seção de provedores, podemos usar o objeto de definição de provedor useFactory . Dessa forma podemos passar uma fábrica que contém a lógica que decide como devem ser as rotas.

Breve lembrete: Se você carregou o módulo às 5h59 e esperou até as 6h01, a rota dos dias não estará disponível, pois a configuração da rota já foi feita anteriormente. Isso significa que a lógica que define as rotas só acontece uma vez quando o módulo é carregado.

Conclusão

Espero poder mostrar-lhe algo novo e interessante. Se você estiver interessado em Angular, confira meus outros posts no Medium.

O exemplo completo está disponível no meu GitHub:

Suggested posts

pronomes são super assustadores

Isso me atinge De repente, como tantas vezes acontece É o meio do caminho tudo de novo <Não, não aquele no Pacífico, seu marrom, aquele no carnaval> Todas as manchetes em voz alta…..

A lenta erosão: revelando como as pessoas desperdiçam em suas carreiras

A lenta erosão: revelando como as pessoas desperdiçam em suas carreiras

No mundo acelerado e competitivo de hoje, a carreira desempenha um papel significativo no crescimento pessoal, na estabilidade financeira e na satisfação geral com a vida. No entanto, muitos indivíduos encontram-se presos em um ciclo implacável de estagnação e insatisfação, definhando gradualmente em suas vidas profissionais.

Related posts

A revolução no local de trabalho: os principais especialistas discutem o trabalho híbrido e remoto

A revolução no local de trabalho: os principais especialistas discutem o trabalho híbrido e remoto

No atual cenário de negócios em rápida evolução, o conceito de trabalho híbrido e remoto ganhou um impulso sem precedentes. À medida que as empresas continuam a se adaptar às mudanças nas necessidades e expectativas de seus funcionários, especialistas de várias áreas se reuniram para discutir os benefícios, os desafios e o futuro dessa forma transformadora de trabalhar.

Encontrar informações sobre nomes de domínio

Um trecho de Small, Sharp Software Tools por Brian P. Hogan

Encontrar informações sobre nomes de domínio

Quando você faz uma solicitação para facebook.com, seu computador procura o nome de domínio para traduzir esse nome de domínio em um endereço IP para que seu computador possa fazer essa conexão.

O primeiro livro de uma criança sobre como ficar chapado

O primeiro livro de uma criança sobre como ficar chapado

(Aviso - isso é sátira, com a intenção de ser alegremente subversivo - definitivamente não é para crianças) Você viu sua mãe e seu pai se esconderem na cozinha e fumarem aqueles cigarros fedorentos. Eles dizem a você.

O que torna um podcast influente?

O que torna um podcast influente?

Na semana passada, notei um comunicado de imprensa, enviado via PressGazette (um site de notícias da mídia britânica). O artigo anunciava que a Acast, a empresa de publicidade e hospedagem de podcast Scandi, lideraria um consórcio de "provavelmente os editores mais influentes" em podcasting.