Reputation: 984
I got a problem with my data in localStorage .. I tried to set data in localStorage before displaying my page for after get it and display it .. But before showing my page my item in localStorage is null ..
My code file.ts
displayFolder(folderId) {
this.foldersService.getFoldersById(folderId).subscribe(
foldersConsult => {
this.foldersConsult.push(foldersConsult);
localStorage.setItem('foldersConsult', JSON.stringify(this.foldersConsult));
});
this.router.navigate(['/folder/consult']);
};
My html for calling displayFolder method
<tr *ngFor="let folder of foldersItems" (dblclick)="displayFolder(folder.id)" >
...
</tr>
My services ts
getFoldersById(folderId) {
return this.http.get('../assets/data/folders.json')
.map((response) => {
const allFolder = response.text() ? response.json() : [{}];
if (allFolder) {
for (const folder of allFolder) {
if (folder.id === folderId) {
this.folderssConsult.push(folder);
return folder;
}
}
}
return allFolder;
});
}
So how can I set data in localStorage before display my page ..?
Upvotes: 1
Views: 45
Reputation: 162
You cand simply redirect after you made changes to localStorage:
displayFolder(folderId) {
this.foldersService.getFoldersById(folderId).subscribe(
foldersConsult => {
this.foldersConsult.push(foldersConsult);
localStorage.setItem('foldersConsult', JSON.stringify(this.foldersConsult));
this.router.navigate(['/folder/consult']);
});
};
Or if you want to do it more flexible you can use Resolver
Upvotes: 2