我是angular2的新手,並嘗試在登錄後將數據保存在本地存儲中,並且對我來說工作正常,我能夠從本地存儲中獲取該項目服務,但在其他服務/組件中獲取本地存儲時存在問題。這是我的代碼。如何獲取本地存儲數據的服務/組件角2
我已經在login.service中設置了值,但無法登錄組件。請看看有沒有人能幫助我。
login.service.ts
import { Injectable } from '@angular/core';
import { Http, Headers, Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map'
import configApp = require('../_configs/app.settings');
//import '../assets/frontend/custom/js/jquery.toaster.config.js';
declare function maketoast(status: string, message: string) : void;
@Injectable()
export class AuthenticationService {
constructor(private http: Http) { }
login(username: string, password: string) {
// console.log(configApp.apiUrl+/test);
return this.http.post(configApp.apiUrl+"/api/login", JSON.stringify({ username: username, password: password }))
.map((response: Response) => {
// login successful if there's a jwt token in the response
let user = response.json();
console.log(user.status);
if(user.status == false){
maketoast(user.toaster_status, user.message);
event.stopImmediatePropagation;
event.preventDefault();
event.stopPropagation();
}
//console.log(user.token);
if (user && user.token) {
// store user details and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('currentUser', JSON.stringify(user));
maketoast(user.toaster_status, user.message);
console.log(window.localStorage.getItem('currentUser'));
event.stopPropagation();
}
});
}
logout() {
// remove user from local storage to log user out
localStorage.removeItem('currentUser');
}
}
login.component.ts
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { AlertService, AuthenticationService } from '../_services/index';
//import { AppSettings,IEnvVars } from '../_configs/app.settings';
@Component({
moduleId: module.id,
templateUrl: '../templates/login.component.html',
providers:[AlertService, AuthenticationService]
})
export class LoginFormComponent implements OnInit {
model: any = {};
loading = false;
constructor(
private router: Router,
private authenticationService: AuthenticationService,
private alertService: AlertService) {
**please see here**
let value: string = localStorage.getItem("currentUser");
console.log(value);
}
ngOnInit() {
// reset login status
this.authenticationService.logout();
}
login() {
this.loading = true;
this.authenticationService.login(this.model.username, this.model.password)
.subscribe(
data => {
this.router.navigate(['/']);
},
error => {
this.alertService.error(error);
this.loading = false;
}
);
}
}
其實我無法在任何地方獲得該存儲價值。無論是在構造函數還是在類函數中。正如你可以在login.sevice.ts文件中看到的,我能夠獲取本地數據(window.localStorage.getItem('currentUser')),但是當我試圖在登錄組件或任何組件中獲取它時,它無法工作。 –
您是否在調試器中看到本地存儲? Chrome - 開發人員工具>應用程序>本地存儲> *本地站點*。 如果你知道如何檢查那個細節的遺憾! – Tucker
不存儲在本地存儲中。你可以給參考嗎? –