Могу ли я как то сделать два компонента, чтоб роуты проходили сначала через один, а потом через другой на Angular2?
Добрый день! Делаю сайт на Angular2.
У меня есть главный компонент - AppComponent. В него я попадаю первоначально когда захожу на сайт. В нем прописан роутконфиг с путями, и в html есть . Вроде все хорошо, но первая страничка у меня - страница ауторизации и она отличается от других. Можно как то ли сделать, чтоб на этой странице проверилось авторизован пользователь или нет, а потом если да, перекинуть его в другой компонент, который бы считался стартовым со своими роут конфигами и route-outlet. К чему я это все хочу сделать, у меня страница авторизации бзе шапки, а на всех остальных мне нужна шапка, т.е. в AppСomponent темплейте я не могу добавить еще что то типа того , тк он сразу будет виден, а прятать его, мне кажется не решение. Подскажите, как сделать лучше?
А теперь давайте перечитаем что вы написали и подумаем. Если у вас есть AppComponent, который вроде как все ваше приложение, но есть какой-то компонент (LoginForm) который имеет отличный от AppComponent лэйаут и т.д. то логично предположить что AppComponent это не совсем "компонент верхнего уровня" и т.д.
Авторизация (а точнее авторизован ли чувак) проверяется в ресолверах маршрутов а не в компонентах.
Как проверить авторизован ли пользователь я знаю, я спрашивал по сути как сделать так, что если загружен компонент авторизации то шапку не показывать, а во всех других случаях показывать. И нормальное решение прятать компонент оутлет шапки за *ngIf, вот так:
Егор Ш.: я вам уже подскзал - в AppComponent должно быть только общее, если общего нет - значит там будет только определяться что показывать. Ну и т.д. А разруливать лэйауты можно через трансклюды.
Сергей Протько: я сделал AppComponent общим, с двумя роутами, на Auth - который ведет к авторизации, и Feed который уже внутренний, в компоненте Feed есть свои роуты: и свой route-outlet, в котором я уже отображаю все остальное. но получается так, что все остальные страницы которые через компонент Feed проходят имеют в адресной строке такой вид mysite.ru/feed/createnewitem, а как можно сделать чтоб не было таких длинных названий, и страница открывалась через mysite.ru/createnewitem ? Так вообще можно сделать?