1
resposta

[Dúvida] Erro na rota de novo animal

Propositalmente coloquei a rora de novo animal de pois da rota do componente DetalheAnimal. Assim:

const routes: Routes = [
  {
    path: '',
    component: ListaAnimaisComponent,
    resolve:{
      animais: ListaAnimaisResolver
    }
  },
  {
    path: ':animalId',
    component: DetalheAnimalComponent
  },
  {
    path: 'novo',
    component: NovoAnimalComponent
  }
];

levei em consideração que essa rota deveria estar por último por ter sido assim incluída(por último), e não funcionou, chamou o componente mas não renderizou a página. Somente quando fiz como na aula assim:

const routes: Routes = [
  {
    path: '',
    component: ListaAnimaisComponent,
    resolve:{
      animais: ListaAnimaisResolver
    }
  },
  {
    path: 'novo',
    component: NovoAnimalComponent
  },
  {
    path: ':animalId',
    component: DetalheAnimalComponent
  }
];

Funcionou. Poderia me dizer porque teria que manter essa ordem?

1 resposta

Oii, Eber! Tudo bem?

Peço desculpas pela demora em te responder.

A ordem das rotas no Angular é importante porque o roteador do Angular procura uma correspondência entre a URL atual e as rotas definidas. Quando colocamos a rota'/novo'por último, o roteador encontra uma correspondência com a rota ':animalId' antes de encontrar a rota '/novo'. Isso acontece porque a rota ':animalId' também pode corresponder a '/novo', já que o parâmetro':animalId' pode ser qualquer valor.

Então, quando coloca rota '/novo' antes da rota ':animalId', o roteador encontra uma correspondência com '/novo' primeiro e renderiza o componente NovoAnimalComponent corretamente.

Caso tenha interesse em se aprofundar nesse tema, recomendo a leitura do artigo abaixo:

Espero ter ajudado.

Bons estudos, Eder!