2016-12-22 3 views
0

Ich möchte eine andere Vorlage machen, wenn die Authentifizierung fehlgeschlagen:dynamische Aktualisierung der Vorlage auf einer Komponente

@Component({ 
    selector: 'app-root', 
    templateUrl: './a.html', 
    }) 
export class AppComponent implements OnInit { 
    ngOnInit() { 
     if (!this.isAuthenticated()) { 
      this.templateUrl = './b.html'; 
     } 
    } 
    isAuthenticated(): boolean { 
     // return by user authenticate status 
    } 
} 
+0

Verwenden Sie 'NgSwitch' oder erstellen Sie andere Compo – anshuVersatile

+0

Dank Antwort, ich möchte wissen, wie Sie andere Komponente in app.component erstellen. @anshuVersatile – jame2981

Antwort

1

Was Sie brauchen eigentlich eine Wache und keine Umleitung oder eine andere Komponente.

Neues authentication.guard.ts mit diesem Code:

@Injectable() 
export class AuthenticationGuard implements CanActivate { 

constructor(
    private router: Router, 
    private authenticationService: AuthenticationService, 
) {} 

public canActivate(): boolean { 
    if (this.authenticationService.isLoggued()) { 
     return true; 
    } 

    this.router.navigate(["/login"]); 
    return false; 
} 

}

In Ihrer Route Definition an, dass der Zugriff auf eine definierte Komponente soll durch diesen Wächter geschützt werden:

{ path: "yourRoute", component: DummyComponent, canActivate: [AuthenticationGuard] }, 

Jetzt wird jede Anfrage mit diesem Schutz "überprüft". Und du bist gut zu gehen.

+0

Dank Antwort, navigieren wird neues Element auf Router-Steckdose erstellen, warte ich ersetzen app-root. – jame2981

+0

Was ich dir sage ist, dass es weder die Lösung noch der richtige Weg ist, es zu tun. – Sakuto

Verwandte Themen