私はAngular 4+(現在v.6を使用しています)の初心者です。使用しようとしていましたthis.router.navigate(['/ landing'])ログインコンポーネントからランディングコンポーネントにリダイレクトする関数です。正しく機能していません。ランディングページを1秒間表示してから、再度ログインページにリダイレクトします。
しかし、たとえば通常のリンクをナビゲートしようとすると、
<a routerLink="/landing">landing</a>
正常に動作します。
これが私の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 { }
そして、これがログインコンポーネントのコードです、
export class LoginComponent implements OnInit {
constructor(private router: Router) { }
ngOnInit() {
}
login(){
this.router.navigate(['/landing']);
}
}
これが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 { }
助けてくれてありがとう。
私は同様の問題に直面し、それをどのように解決したか:
Component.ts内
constructor(private router: Router, private route: ActivatedRoute){}
this.router.navigate(['../landing'], {relativeTo: this.route})
これを試して、それが役立つかどうか教えてください!!!
これを変更してみてください:
{
path: 'login',
loadChildren: './login/login.module#LoginModule'
}
これに:
{
path: 'login',
loadChildren: () => LoginModule
}
しかし、私の最善の解決策はこれです:
コンストラクタに追加:
constructor(private readonly loader: NgModuleFactoryLoader)
次に、モジュール自体をロードした後でのみ、navigateを呼び出す必要があります。
this.loader.load(./login/login.module#LoginModule)
.then(factory => {
this.router.navigate(['/landing']);
});