如何重定向到 ngOnInit 中的新组件
How to redirect to a new component in ngOnInit
我正在制作一个 Angular 组件,用户可以通过单击发送到他们电子邮件的 link 来访问该组件,其中包含他们的用户 ID。我需要这样做,以便在他们已经完成注册时自动将他们重定向到管理页面。但是,似乎在 ngOnInit
事件中使用 router.navigate
不起作用,给出错误
Error: Uncaught (in promise): Error: BrowserModule has already been loaded.
代码如下:
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 两次 - 但如果是这种情况,在 Angular 中 是否以这种方式重定向?
编辑:这实际上是用户管理路由模块中的一个问题。
该错误表明您以某种方式在您的应用中多次导入了 BrowserModule
。如docs中指定,BrowserModule
模块必须在应用程序的根模块中导入:
Do not import BrowserModule in any other module. Feature modules and
lazy-loaded modules should import CommonModule instead. They need the
common directives. They don't need to re-install the app-wide providers.
此外,NoopAnimationsModule
和 BrowserAnimationsModule
包含 BrowserModule
,因此如果您要导入其中之一,则需要删除导入 BrowserModule
(如果您有一个).
检查您要导入哪些模块 .module.ts
如果您正在使用 BrowserAnimationsModule
放在BrowserModule
之前
并检查什么是子模块的导入
我正在制作一个 Angular 组件,用户可以通过单击发送到他们电子邮件的 link 来访问该组件,其中包含他们的用户 ID。我需要这样做,以便在他们已经完成注册时自动将他们重定向到管理页面。但是,似乎在 ngOnInit
事件中使用 router.navigate
不起作用,给出错误
Error: Uncaught (in promise): Error: BrowserModule has already been loaded.
代码如下:
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 两次 - 但如果是这种情况,在 Angular 中 是否以这种方式重定向?
编辑:这实际上是用户管理路由模块中的一个问题。
该错误表明您以某种方式在您的应用中多次导入了 BrowserModule
。如docs中指定,BrowserModule
模块必须在应用程序的根模块中导入:
Do not import BrowserModule in any other module. Feature modules and lazy-loaded modules should import CommonModule instead. They need the common directives. They don't need to re-install the app-wide providers.
此外,NoopAnimationsModule
和 BrowserAnimationsModule
包含 BrowserModule
,因此如果您要导入其中之一,则需要删除导入 BrowserModule
(如果您有一个).
检查您要导入哪些模块 .module.ts
如果您正在使用 BrowserAnimationsModule
放在BrowserModule
并检查什么是子模块的导入