3
respostas

Preciso atualizar a pagina para carregar os dados

Boa noite,

Estou com um problema que é o seguinte.

após fazer o login e chegar no dashboard, a pagina nao esta carregando os dados. Para carregar os dados do payload no dashboard eu preciso dar um refresh na pagina.

Meu authservice esta assim:

import { Injectable } from '@angular/core';

import { Http,Headers } from '@angular/http';
import{tap} from 'rxjs/operators'
import { TokenService } from './token/token.service';




const API_URL = 'http://testett:8080/co-ws/';


@Injectable({
  providedIn: 'root'
})
export class AuthService {
   //userAdm: string;
   rotaUser:String;

  retorno:any = [];

  constructor(private _http:Http,
              private tokenService: TokenService) { }

  authenticate(userName: string, password:any){
    let headers = new Headers();
    headers.append('Content-Type' , 'application/json');

 return this._http.post(
   API_URL + '/seguranca/login', 
 {login:userName, senha:password},
 {headers: headers}
 )
 .pipe(tap(res =>{

   this.retorno = res.json();
   const tokenBody = this.retorno;

   var userAdm = '';
   userAdm = this.retorno.flagAdministrador;
   console.log(userAdm);
   if(userAdm == 'S'){

     this.rotaUser = 'loginadm'

   }else{
     this.rotaUser = 'dashboard'
   }

   this.tokenService.setToken(tokenBody);
   console.log(tokenBody);
 }))


  }
}``

e o login esta assim:

import { Component, OnInit } from '@angular/core'; import { Router } from '@angular/router'; import { routerTransition } from '../router.animations'; import { AuthService } from '../core/auth.service';

import {Md5} from 'ts-md5/dist/md5'

@Component({ selector: 'app-login', templateUrl: './login.component.html', styleUrls: ['./login.component.scss'], animations: [routerTransition()] })

export class LoginComponent implements OnInit { userName = 'financeiro.bef'; password = '1234';

  //retorno:object = [];

constructor(public router: Router,
            private authService: AuthService


            ) { }

ngOnInit() {


}

onLoggedin() {
    let passmd5 = Md5.hashStr(this.password);
    console.log(passmd5);
    return this.authService
    .authenticate(this.userName,passmd5)
    .subscribe(
        ()=> this.router.navigateByUrl(`${this.authService.rotaUser}`),
        err => {
            console.log(err);

            alert('Usuario ou senha invalido');
        }
    );

}

}

tem alguma solução para nao ser preciso toda fez que eu fizer o login dar um refresh manual na pagina para carregar os dados?

3 respostas

Boa noite, Alexandre! Como vai?

Eu observei um problema no seu código! Repare que a partir de 3:30 dessa aula o mestre Flávio troca uma das dependências de AuthService! Ele trocou de private tokenService: TokenService para private userService: UserService e efetuou as mudanças necessárias na classe.

Não sei se esse é o único problema! Mas dá uma olhada aí e veja se isso resolve o seu problema. Caso persista, é só mandar uma mensagem aqui que eu continuo a te ajudar!

Grande abraço e bons estudos, meu aluno!

Gabriel,

Quando eu faço a troca conforme o flavio fez, retorna esse erro no console.

core.js:1673 ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'ngMetadataName' of undefined
TypeError: Cannot read property 'ngMetadataName' of undefined
    at injectArgs (core.js:1418)
    at core.js:1491
    at _callFactory (core.js:8438)
    at _createProviderInstance (core.js:8396)
    at resolveNgModuleDep (core.js:8371)
    at NgModuleRef_.push../node_modules/@angular/core/fesm5/core.js.NgModuleRef_.get (core.js:9064)
    at inject (core.js:1403)
    at injectArgs (core.js:1434)
    at core.js:1491
    at _callFactory (core.js:8438)
    at injectArgs (core.js:1418)
    at core.js:1491
    at _callFactory (core.js:8438)
    at _createProviderInstance (core.js:8396)
    at resolveNgModuleDep (core.js:8371)
    at NgModuleRef_.push../node_modules/@angular/core/fesm5/core.js.NgModuleRef_.get (core.js:9064)
    at inject (core.js:1403)
    at injectArgs (core.js:1434)
    at core.js:1491
    at _callFactory (core.js:8438)
    at resolvePromise (zone.js:814)
    at resolvePromise (zone.js:771)
    at zone.js:873
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421)
    at Object.onInvokeTask (core.js:3815)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:420)
    at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:188)
    at drainMicroTaskQueue (zone.j

Boa tarde, Alexandre! Como vai?

É possível que vc possa ter deixado passar algum outro detalhe! Vc poderia mandar todo o log de erro que ocorre na sua aplicação para ver se eu tenho alguma dica a partir dele?