Ich versuche, die canActivate
Funktion gibt true
oder false
zurück.Angular 2 - Wert zwischen den Diensten senden
Der boolean Wert wird aus der Funktion signin()
in Datei login.service.ts
in response.json().message
und erscheint true
oder false
scheint aber nicht den Wert, wenn ich this.loginService.logado()
in canActivate
Funktion in der Datei auth.guard.ts
verwenden.
Wer weiß, wie man dieses Problem löst?
login.service.ts
import {Injectable} from "@angular/core";
import {Http, Headers} from "@angular/http";
import {Observable} from "rxjs/Observable";
import 'rxjs/Rx';
import {Config} from '../config';
@Injectable()
export class LoginService{
token: string;
userId: string;
constructor (private _http: Http) {}
login(contentLogin){
const body = JSON.stringify(contentLogin);
const header = new Headers({'Content-Type': 'application/json'});
return this._http.post(Config.URL_SITE + 'auth/login', body, {headers: header})
.map(response => response.json())
.catch(error => Observable.throw(error.json()));
}
signin() {
this.token = localStorage['token'];
this.userId = localStorage['userId'];
const body = JSON.stringify({token: this.token, userId: this.userId});
const header = new Headers({'Content-Type': 'application/json'});
return this._http.post(Config.URL_SITE + 'auth/signin', body, {headers: header})
.map(response => response.json().message) //true or false
.catch(error => Observable.throw(error.json()));
}
}
auth.guard.ts
import {Injectable} from '@angular/core';
import {CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot} from '@angular/router';
import {Observable} from 'rxjs/Rx';
import {LoginService} from './login/login.service';
@Injectable()
export class AuthGuard implements CanActivate {
constructor(private loginService: LoginService) {}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
return this.loginService.signin()
}
}
Verwenden Sie das Rückgabeschlüsselwort '. map ((response) => {return response. Json(). message} ') ... – micronyks
Hallo Micronyks, in der' canActivate' zeigt das Observable-Objekt, anstatt nur den Wert boolean – rafaelcb21