我是Angular 4+的新手(目前正在使用v.6)。我一直在尝试使用 this.router.navigate([' / landing'])功能从登录组件重定向到登陆组件,它不是好好工作。 它将显示登录页面一秒钟,然后再次重定向回登录页面。
但是,如果我尝试浏览普通链接,例如,
<a routerLink="/landing">landing</a>
&#13;
它运作正常。
这是我的app-routing.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { Routes, RouterModule } from '@angular/router';
const routes: Routes = [
{
path: 'login',
loadChildren: './login/login.module#LoginModule'
},
{
path: 'landing',
loadChildren: './landing/landing.module#LandingModule'
},
{
path: '',
redirectTo: 'landing',
pathMatch: 'full'
},
{
path: '**',
redirectTo: 'landing',
pathMatch: 'full'
}
];
@NgModule({
imports: [ RouterModule.forRoot(routes) ],
exports: [ RouterModule ]
})
export class AppRoutingModule { }
&#13;
这是登录组件中的代码,
export class LoginComponent implements OnInit {
constructor(private router: Router) { }
ngOnInit() {
}
login(){
this.router.navigate(['/landing']);
}
}
&#13;
以下是landing-routing.module.ts
中的代码
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { LandingComponent } from './landing.component';
const routes: Routes = [
{
path:'', component: LandingComponent
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class LandingRoutingModule { }
&#13;
感谢您的帮助。
答案 0 :(得分:0)
我遇到了类似的问题,如何解决:
在Component.ts
constructor(private router: Router, private route: ActivatedRoute){}
this.router.navigate(['../landing'], {relativeTo: this.route})
尝试一下,让我知道是否有帮助!
答案 1 :(得分:0)
尝试更改此内容
{
path: 'login',
loadChildren: './login/login.module#LoginModule'
}
对此:
{
path: 'login',
loadChildren: () => LoginModule
}
答案 2 :(得分:0)
但是我最好的解决方法是:
添加到构造函数中:
constructor(private readonly loader: NgModuleFactoryLoader)
然后,只有在加载模块本身之后,您才应调用navigation:
this.loader.load(./login/login.module#LoginModule)
.then(factory => {
this.router.navigate(['/landing']);
});