Visual Studio 2015 AspNetCoreプロジェクトでAngular 2.1.0を使用していて、遅延ロードされたモジュールでルーティングに問題があります。エラーは以下の通りである:私はAppModule
と呼ばれるブートストラップモジュールで{Home/Login}
最初のログインページをロードしていますlazy load topic here に応じTour Of Heroes tutorialを踏襲し、それを適応しているAngular 2.1のルートに一致しません
core.umd.js:3257 EXCEPTION: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'Home/MyList' Error: Cannot match any routes. URL Segment: 'Home/MyList' at ApplyRedirects.noMatchError (http://localhost:31534/libraries/@angular/router/bundles/router.umd.js:769:20) at CatchSubscriber.eval [as selector] (http://localhost:31534/libraries/@angular/router/bundles/router.umd.js:747:33) at CatchSubscriber.error (http://localhost:31534/libraries/rxjs/operator/catch.js:52:31) at MapSubscriber.Subscriber._error (http://localhost:31534/libraries/rxjs/Subscriber.js:128:26) at MapSubscriber.Subscriber.error (http://localhost:31534/libraries/rxjs/Subscriber.js:102:18) at MapSubscriber.Subscriber._error (http://localhost:31534/libraries/rxjs/Subscriber.js:128:26) at MapSubscriber.Subscriber.error (http://localhost:31534/libraries/rxjs/Subscriber.js:102:18) at MapSubscriber.Subscriber._error (http://localhost:31534/libraries/rxjs/Subscriber.js:128:26) at MapSubscriber.Subscriber.error (http://localhost:31534/libraries/rxjs/Subscriber.js:102:18) at LastSubscriber.Subscriber._error (http://localhost:31534/libraries/rxjs/Subscriber.js:128:26)
。ログインをクリックすると、次のページMyList
、{Home/MyList}
が表示され、MyModule
という機能モジュールに遅延ロードされます。
MyModule
is based on theHeroModule
from the second link above.
MyList
ページと関連する成分もMyListDetail
ページ/コンポーネント{Home/MyListDetail}
を有するMyModule
下の最初のページ/構成要素です。
私はなぜ私のルートが発見されていない?
let link = ['Home/MyList'];
this.router.navigate(link);
このコードを使用して、ボタンクリックで{Home/MyList}
に移動しますかここで私はそれらをセットアップする方法です。
アプリ-routing.module.ts
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
export const routes: Routes = [
{ path: '', redirectTo: 'Home/Login', pathMatch: 'full'},
{ path: 'Home/MyList', loadChildren: 'scripts/My.Module#MyModule' }
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule {}
ログイン-routing.module.ts
import { NgModule } from '@angular/core';
import { Router, RouterModule } from '@angular/router';
import { LoginCmpnt } from './Login';
@NgModule({
imports: [RouterModule.forChild([
{ path: 'Home/Login', component: LoginCmpnt}
])],
exports: [RouterModule]
})
export class LoginRoutingModule {}
マイリスト-routing.module.ts
import { NgModule } from '@angular/core';
import { Routes } from '@angular/router';
import { RouterModule } from '@angular/router';
import { SharedModule } from './shared.module';
import { MyComponent } from './MyComponent';
import { MyListComponent } from './MyListComp';
import { MyListDetailComponent } from './MyListDetailComp';
const routes: Routes = [
{ path: '',
component: MyComponent,
children: [{ path: 'Home/MyList', component: MyListComponent },
{ path: 'Home/MyListDetail/:id', component: MyListDetailComponent }]
}];
@NgModule({
imports: [RouterModule.forChild([routes]), SharedModule ],
exports: [RouterModule]})
export class MyListRoutingModule {}
上記のMyList-routing.module
には、MyComponent
のパスにはどうすればよいですか? Home/MyList
EDIT
へのログイン方法のルートは、これでもログインクリックでパスの前にスラッシュと動作しません。
let link = ['/Home/MyList'];
this.router.navigate(link);
あなたは 'let link = ['/ Home/MyList'];'( '/'を追加しましたか? –
はい。それはどちらもうまくいかなかった。私のルートは、先行するスラッシュで設定されていません。私は、ログインボタンコードに追加したときにセットアップでスラッシュを追加しようとしました。 – user20358
先行スラッシュでルートを設定してはいけませんが、兄弟ルートまたは子ルートに移動しない場合は、スラッシュルートにナビゲートするとき。 –