Angular2 Comment afficher localStorage valeur à l'intérieur de HTML5 modèle?
- Je stocker 2 clés dans le localStorage et j'aimerais afficher l'un d'eux dans mon template. Je ne peux pas accéder à ces valeurs. J'ai même créé une interface pour stocker la valeur de la currentUser clé de localStorage. Comment faut-il mettre en œuvre?
Voici le code actuel:
Service
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import { Md5 } from 'ts-md5/dist/md5';
import { User } from './user';
import 'rxjs/add/operator/map';
@Injectable()
export class VehicleService {
private defUrl = 'dummy-url.com';
constructor(private http: Http) { }
getVehicle(username?: string, password?: string) {
const url = (!username || !password) ? this.defUrl : 'dummy-url.com' + username + '/' + Md5.hashStr(password);
return this.http.get(url)
.map(res => res.json());
}
parseUser(): any {
return JSON.parse(localStorage.getItem('parseUser'));
}
getUser(): any {
return localStorage.getItem('currentUser');
}
}
Composant Login
import { Component, OnInit } from '@angular/core';
import { FormGroup, FormControl, Validators } from '@angular/forms';
import { Location } from '@angular/common';
import { Router } from "@angular/router"
import { VehicleService } from './vehicle.service';
import { User } from './user';
@Component({
selector: 'login',
templateUrl: './login.html',
providers: [VehicleService]
})
export class LoginComponent implements OnInit {
public user: FormGroup;
ngOnInit() {
this.user = new FormGroup({
username: new FormControl('', Validators.required),
password: new FormControl('', Validators.required)
});
}
constructor(public vehicleService: VehicleService, private location: Location, private router: Router) {
}
onSubmit(user) {
this.vehicleService
.getVehicle(user.value.username, user.value.password)
.subscribe(user => {
this.user = user;
localStorage.setItem('parseUser', JSON.stringify(this.user));
this.router.navigate(['/vehicle']);
console.log('submit');
});
localStorage.setItem('currentUser', user.value.username);
}
goBack(): void {
console.log("Back button");
this.location.back();
}
}
Composant Du Véhicule
import { Component, enableProdMode, OnDestroy } from '@angular/core';
import { Router } from '@angular/router';
import { FormGroup } from '@angular/forms';
import { VehicleService } from './vehicle.service';
import { User } from './user';
import { LoginComponent } from './login.component';
enableProdMode();
@Component({
selector: 'vehicle-json',
templateUrl: './vehicle.html',
providers: [VehicleService]
})
export class VehicleComponent implements OnDestroy {
public vehicles: GeneralVehicle[];
public currUser: CurrentUser;
ngOnDestroy() {
localStorage.removeItem('currentUser');
}
constructor(private vehicleService: VehicleService, private router: Router) {
this.vehicleService.getVehicle().subscribe(vehicle => {
this.vehicles = vehicle;
this.vehicles = this.vehicleService.parseUser();
//this.vehicles = this.vehicleService.parseUser();
});
let currUser = this.vehicleService.getUser();
}
toLogin(): void {
console.log("toLogin button");
this.router.navigate(['/login']);
localStorage.removeItem('parseUser');
localStorage.removeItem('currentUser');
}
}
interface GeneralVehicle {
status: number;
dallases: Vehicle[];
}
interface Vehicle {
vehicle_id: number;
dallassettings: string;
dallasupdated: string;
dallas_list: DallasList[];
}
interface DallasList {
number: number;
auth: number;
}
interface CurrentUser {
usr: string;
}
Modèle: vehicle.html
<button class="btn btn-default" type="button" (click)="toLogin()">Login</button>
<div *ngIf="vehicles">
<b>Status: {{vehicles?.status}} for user: DISPLAY-USER-HERE</b>
<div class="list-group" *ngFor="let vehicle of vehicles.dallases" id="d1">
<a class="list-group-item">
<h4 class="list-group-item-heading" id="l1">Vehicle ID: {{vehicle.vehicle_id}}</h4>
</a>
<a class="list-group-item">
<h4 class="list-group-item-heading">Dallas settings: {{vehicle.dallassettings}}</h4>
</a>
<a class="list-group-item">
<h4 class="list-group-item-heading">Dallas updated: {{vehicle.dallasupdated}}</h4>
</a>
<a class="list-group-item">
<h4 class="list-group-item-heading">Dallas list:</h4>
<p class="list-group-item-text" *ngFor="let d of vehicle.dallas_list">
<b>Number:</b> {{d.number}}<br>
<b>Auth:</b> {{d.auth}}</p>
</a>
</div>
</div>
Où/Comment êtes-vous en train d'essayer d'accéder à
Dans mon
Vous savez
J'ai résolu ce problème en utilisant Sabbir Rahman suggestion, mais je vous remercie pour votre temps, je suis nouveau sur ce langage et toujours apprendre de nouvelles choses.
currentUser
?Dans mon
Vehicle Component
: let currUser = this.vehicleService.getUser();
- ici, j'ai essayer de passer de la valeur de currentUser
la clé et puis j'ai essayé de l'afficher dans vehicle.html
modèle où j'ai écrit DISPLAY-USER-HERE
.Vous savez
let
crée une variable locale à droite? Vous devez l'affecter à un champ; comme this.currUser = this.vehicleService.getUser();
J'ai résolu ce problème en utilisant Sabbir Rahman suggestion, mais je vous remercie pour votre temps, je suis nouveau sur ce langage et toujours apprendre de nouvelles choses.
OriginalL'auteur Haseoh | 2017-02-07
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un getter pour obtenir la valeur de localStorage et l'afficher dans votre modèle. La définissent comme ci-dessous dans la classe de composant de votre modèle.
En vous modèle:
OriginalL'auteur Sabbir Rahman
vous devez définir élément dans un élément et obtenir l'élément partout où vous le souhaitez. vous pouvez définir élément composant login et obtenir l'élément dans la composante du véhicule.
dans le fichier de composant.
modèle:
<b>{{user}}</b>
OriginalL'auteur kalyan teja