Angular-Loiane-Training

Este repositorio contem exemplos documentados e descricoes dos conteudos estudados ao longo do curso de Angular da Loiane

View project on GitHub

Guarda Rotas: CanActivateChield

De forma similar ao CanActivate o CanActivateChield tambem e uma interface que necessita que seu motodo canActivateChield seja implementado, porem neste caso o guarda rotas ira verificar cada nova chamada entre as rotas filhas.

Vamos tomar como exemplo AlunosComponent que possui a rota /alunos e as seguintes rotas filhas /novo, /:id, :id/editar.

  • implementacao do metodo canActivateChield

OBS: neste caso apenas iremos retornar true e exibir uma mensagem no console para identificar a chamada do metodo.

import { Injectable } from '@angular/core';
import { ActivatedRouteSnapshot, CanActivateChild, RouterStateSnapshot, UrlTree } from '@angular/router';
import { Observable } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class AlunosGuard implements CanActivateChild {

  canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | UrlTree | Observable<boolean | UrlTree> | Promise<boolean | UrlTree> {
    console.log('guarda rotas filhas')
    return true
  }

}

no modulo app.routing.module.js sera adicionado o atributo canActivateChield

// ...imports

  {
    path: 'cursos',
    loadChildren: () =>
      import('./_06-rotas/rotas/cursos/cursos.module').
      then(mod => mod.CursosModule),
      canActivate: [AuthGuard]
  },
  {
    path: 'alunos',
    loadChildren: () =>
      import('./_06-rotas/rotas/alunos/alunos.module').
      then(mod => mod.AlunosModule),
      canActivate: [AuthGuard],
      canActivateChild: [AlunosGuard]
  }
]

// ...decorator ngModuel
// ...assinatura da classe

Para exemplificar um console.log('guarda rotas pai') foi adicionado ao guarda rotas do tipo CanActivate assim ambos os guarda rotas irao apresentar uma mensagem no console quando verificarem uma rota. note no exemplo que ao acessar a rota /alunos ambos os metodos sao chamado, porem ao navegar entre as rotas filhas apenas AlunosGuard realiza uma nova verificacao.


guarda rotas CanActivate.