Из-за отсутствия документации с угловым 2 (отсюда она все еще находится в стадии бета-тестирования), я размещаю этот вопрос здесь. Я пытаюсь понять, как реализовать простой флаг, который можно установить или удалить в любом представлении.Реализация повторяющихся свойств вида
Чтобы проиллюстрировать мой вопрос, см. Фрагмент ниже. Флаг «showNav» гарантирует, что люди не будут видеть навигацию при выходе из системы.
Несколько замечаний:
- Сниппет ниже будет работать только в первый раз, так как «ngOnInit» никогда не будет вводить заново. Добавление функции выхода из системы создаст лазейку.
- Реализация логики внутри конструктора не принесет нам много пользы, так как этот код нужно будет скопировать на каждый дочерний компонент, если не будет удобно вызвать «супер» на родительский конструктор?
- Я мог бы реализовать сервис, поскольку кажется, что это может быть «угловой2» способ общения между компонентами, но это кажется ужасно подробным.
Любые комментарии приветствуются!
@Component({
selector: 'app',
template: `
<nav [ngClass]="{active: showNav}"></nav>
<router-outlet></router-outlet>
`
})
@RouteConfig([
{path:'/login', name: 'Login', component: LoginComponent},
{path:'/dashboard', name: 'Dashboard', component: DashboardComponent}
])
export class AppComponent implements OnInit {
public showNav:boolean = false;
constructor(
private router:Router,
private dataService:DataService
){}
ngOnInit() {
if (!this.dataService.getStore().token) {
this.router.navigate(['Login']);
this.showNav = false;
} else {
this.router.navigate(['Dashboard']);
this.showNav = true;
}
}
Вы ищете маршрутизатор жизненным циклом обратных вызовов https://angular.io/docs/js/latest/api/router/CanActivate-var.html? –
Почему вы не подписываетесь на маршрутизатор и не проверяете, жив ли «токен»? –
@EricMartinez отличная идея спасибо –