2017-02-17 7 views
5

Мне нужно разрешить пользователям моего приложения изменять маршрут по умолчанию, когда они захотят: у меня есть страница параметров, где они могут выбрать «страницу», которую они хотят показать при первом входе в систему.Угловой 2 динамически меняет маршрут по умолчанию

К примеру, они перенаправляются на День, когда они входят в систему, но они хотят иметь возможность изменить это и перенаправлять на неделю или месяц, когда они войдут в систему, если они захотят.

{ path: 'planification', component: PlanificationComponent, 
    children: [ 
    { path: '', redirectTo: 'Day', pathMatch: 'full' }, 
    { path: 'day', component: DayComponent }, 
    { path: 'week', component: WeekComponent }, 
    { path: 'month', component: MonthComponent }] 
} 

Как я могу это сделать?

@ угловой/ядра: 2.4.7

@ угловой/маршрутизатор: 3.4.7

Спасибо за вашу помощь!

ответ

5

На самом деле вы можете использовать охранников для этого перенаправлять исправить URL, прежде чем навигация происходит:

{ path: '', canActivate: [UserSettingsGuard], redirectTo: 'Day', pathMatch: 'full' } 

И охранник может выглядеть следующим образом:

@Injectable() 
export class UserSettingsGuard implements CanActivate { 
    constructor(private router: Router) { } 

    canActivate() : boolean { 
    var user = ...; 

    if(user.defaultPage) { 
     this.router.navigate([user.defaultPage]); 
    } else { 
     return true; 
    } 
    } 
} 

Таким образом, вы можете переключиться на новый ВПД при пользователь с перегруженной страницей существует или использует поток по умолчанию.

+0

Не удалось получить это решение для работы с угловым 2.4. Мне нужно было указать путь и компонент. –

+1

Если вы добавите 'children: []', он должен работать, и вам не нужно будет указывать компонент. – Compeek

+0

У меня есть случай, когда пользователю будет разрешен маршрут до набора маршрутов (будет отображаться как вкладки в представлении), и по умолчанию первый из них должен быть перенаправлен. Как это сделать? – karthikaruna

Смежные вопросы