2016-12-22 2 views
0

Я хочу сделать еще один шаблон при неудаче аутентификации:Динамическое обновление шаблона на компоненте

@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

использовать 'NgSwitch' или создавать другие compo – anshuVersatile

+0

спасибо, я хочу знать, как создать другой компонент в app.component. @anshuVersatile – jame2981

ответ

1

Что вам нужно на самом деле охранник и не редирект или другой компонент.

Создать учетную authentication.guard.ts, содержащие этот код:

@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; 
} 

}

В вашем определении маршрута, указать, что доступ к определенному компоненту должны быть защищены этим охранником:

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

Теперь каждый запрос будет «проверен» с этим предохранителем. И тебе хорошо идти.

+0

благодарю ответ, navigate создаст новый элемент на маршрутизаторе-выходе, я жду замены app-root. – jame2981

+0

Я говорю вам, что это не решение и не правильный способ сделать это. – Sakuto