user1814879
user1814879

Reputation: 984

Data in localStore is null before display page

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

Answers (1)

Антон Тишин
Антон Тишин

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

Related Questions