Я создаю компонент Angular, к которому пользователь получает доступ, щелкнув ссылку, отправленную на его электронную почту, которая содержит его идентификатор пользователя. Мне нужно сделать так, чтобы он автоматически перенаправлял их на страницу администратора, если они уже завершили свою регистрацию. Однако кажется, что использование router.navigate
внутри события ngOnInit
не работает, что приводит к ошибке
Ошибка: не перехвачено (в обещании): ошибка: BrowserModule уже загружен.
Вот код:
ngOnInit() {
this.activatedroute.params.subscribe(params => {
this.API.getUserData(params['id']).subscribe(res => {
console.log(res);
this.item = res;
sessionStorage.setItem('USER_ID', this.item._id);
if (res["registry_complete"]){
this.router.navigate(['/user-admin']);
} else {
}
});
});
}
Как мне этого добиться?
РЕДАКТИРОВАТЬ: Несмотря на то, что говорится об ошибке, BrowserModule импортируется только один раз в основном модуле. Если "this.router.navigate (['/ user-admin']);" удаляется, код работает нормально. Он также отлично работает вне функций ngOnInit или конструктора. Я подозреваю, что причина этой ошибки заключается в том, что router.navigate пытается снова загрузить основной модуль, и, поскольку страница находится в процессе загрузки, она импортирует BrowserModule дважды, но если это так, то как делает em> один редирект таким образом в Angular?
РЕДАКТИРОВАТЬ: На самом деле это была проблема в модуле маршрутизации пользователя и администратора.