2017-11-15 1 views
0

Ich habe eine Routing-StrukturKind Weg Render erst nach Eltern-Route gemacht

path: '', 
    component: MainComponent, 
    children: [ 
     {path: 'employees', component: EmployeesComponent, canActivate: [AuthGuard], children: [ 
     {path: '', component: EmployeeListComponent, pathMatch: 'full', canActivate: [AuthGuard]}, 
     {path: ':id', component: EmployeeMainComponent, pathMatch: 'full', canActivate: [AuthGuard]} 
     ]} 
    ] 
    } 

In Hauptkomponente ngOnInit I Submodule Liste

getSubmodules(id) { 
    this.universityAsideService.getSubmodules(id) 
     .subscribe((subModules) => { 
     this.subModules = subModules; 
     this.saveSubModules(subModules).subscribe((data) => this.goToModule(id)); 
     console.log('submodules in getSubmodules, UniversityAside Co'); 
     console.log(this.subModules); 
     }); 
    } 

    saveSubModules(subModules): Observable<any> { 
    return Observable.create((obs) => { 
     obs.next(localStorage.setItem('subModules', JSON.stringify({ 
     subModules: subModules 
     }))); 
    }); 
    } 

Dann Emloyees Komponentenliste erhalten Submodule von localstorage und dann Ansicht rendert . Bu das Problem beim Besuch localhost:4200/#/employees/ Dann versucht Mitarbeiter-Komponente, Submodule aus dem lokalen Speicher vor MainComponent in lokalen Speicher zu speichern. Wie kann ich dieses Problem lösen? Vielen Dank.

Antwort

0

Implementieren Sie den AuthGuard, um das Rendern der untergeordneten Komponente vor der übergeordneten Komponente zu verhindern.

Ändern Sie die Routen wie:

path: '', 
    component: MainComponent, 
    canActivate: [AuthGuard], 
    children: [ 
     {path: 'employees', component: EmployeesComponent, canActivate: [AuthGuard], children: [ 
     {path: '', component: EmployeeListComponent, pathMatch: 'full', canActivate: [AuthGuard]}, 
     {path: ':id', component: EmployeeMainComponent, pathMatch: 'full', canActivate: [AuthGuard]} 
     ]} 
    ] 
    } 
+0

Thanks.So was kann ich in AuthGuard schreiben, dass auf acheive? Ich habe keine Ahnung. In AuthGuard überprüfe ich nur, ob der Benutzer signiert ist oder nicht. –

+0

überprüfen Sie Ihre MainComponent in lokalen Speicher gespeichert oder nicht –

+0

können Sie implementieren wie getModule (ID) und verwenden Sie –

Verwandte Themen