J'apprends comment utiliser Visual Studio 2017 SPA Modèle de angulaire 2.NgxLocalStorage Ne Retrieve Valeur
Pour cet exercice, je voudrais juste mon HomeComponent pour afficher le nom de l'utilisateur connecté stocké dans stockage local (NgxLocalStorage) après la connexion sur mon AppLoginComponent. https://www.npmjs.com/package/ngx-localstorage
J'ai étudié ce problème et je crois que je suis sur la bonne voie, mais pour une raison quelconque, mon HomeComponent ne voit pas la paire clé/valeur dans localStorage. Cependant, je peux le voir dans les outils de développement de Chrome après l'avoir défini dans login().
NgxLocalStorage a une méthode appelée get, not getItem mais il semble fonctionner de la même manière que getItem. Malheureusement, il ne récupère pas ma valeur.
Je suis assez nouveau pour 2 Angulaire, je suis sûr que je suis juste manque quelque chose quelque part, s'il vous plaît aider.
J'ai importé NgxLocalStorageModule en NgModule dans app.module.shared:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { RouterModule } from '@angular/router';
import { NgxLocalStorageModule } from 'ngx-localstorage';
import { AppComponent } from './components/app/app.component';
import { NavMenuComponent } from './components/navmenu/navmenu.component';
import { HomeComponent } from './components/home/home.component';
import { AppLoginComponent } from './components/applogin/applogin.component';
import { FacebookService, FacebookModule } from 'ngx-facebook/dist/esm/index';
@NgModule({
declarations: [
AppComponent,
NavMenuComponent,
HomeComponent,
AppLoginComponent
],
imports: [
CommonModule,
HttpModule,
FormsModule,
RouterModule.forRoot([
{ path: '', redirectTo: 'home', pathMatch: 'full' },
{ path: 'home', component: HomeComponent },
{ path: 'applogin', component: AppLoginComponent },
{ path: '**', redirectTo: 'home' }
]),
FacebookModule.forRoot(),
NgxLocalStorageModule.forRoot()
],
providers: [FacebookService, NgxLocalStorageModule]
})
export class AppModuleShared {
}
Dans mon HomeComponent je:
import { Component } from '@angular/core';
import { LocalStorageService } from 'ngx-localstorage';
@Component({
selector: 'home',
templateUrl: './home.component.html'
})
export class HomeComponent {
currentUser: string;
constructor(private localStorage: LocalStorageService) {
this.currentUser = JSON.parse(localStorage.get('currentUser') || '');
}
}
Dans AppLoginComponent J'ai:
import { Component, NgZone } from '@angular/core';
import { FacebookService, InitParams, LoginResponse } from 'ngx-facebook/dist/esm/index';
import { LocalStorageService } from 'ngx-localstorage';
@Component({
selector: 'applogin',
templateUrl: './applogin.component.html'
})
export class AppLoginComponent {
public loggedIn = false;
name = "";
constructor(private _ngZone: NgZone, private fb: FacebookService, localStorage: LocalStorageService) {
let initParams: InitParams = {
appId: '123456789',
xfbml: true,
version: 'v2.8'
};
fb.init(initParams);
}
login() {
var self = this;
this.fb.login()
.then((res: LoginResponse) => {
if (res.authResponse) {
this.fb.api('/me')
.then((res: any) => {
self._ngZone.run(() => {
self.name = res.name;
self.loggedIn = true;
localStorage.setItem('currentUser', res.name);
});
});
} else {
alert('Not authorized.');
}
})
.catch();
}
Avez-vous essayé d'appeler setItem() et get() dans une méthode, assurez-vous que localStorage fonctionne? Peut-être que les deux composants ne reçoivent pas la même instance du service. – zgue
Cela a fonctionné, maintenant comment puis-je accéder au même stockage à travers l'application, par exemple mon HomeComponent? – TrevorBrooks
Dans 'app.module.ts' vous avez enregistré le fournisseur' NgxLocalStorageModule'. Cela devrait faire du service un singleton. Enregistrez le paramètre du constructeur 'localStorage' dans une variable membre du composant et accédez-y avec' this.localStorage'. – zgue