私はいくつかのレイジーロードモジュールを持つAngular CLIアプリケーションを持っています。アプリケーションのルートからナビゲートする際には、すべてのルートにアクセスするのに問題はありません。しかし、遅延ロードされたモジュールのルートに直接ルーティングしようとすると、ブラウザは存在しないフォルダからアプリケーションをロードしようとしているように見えます。角度がネストされたルータアウトレットを持つ遅延モジュールを直接ロードする
{
path: 'A', loadChildren:
'./A/A.module#AModule',
canActivate: [LoadGuardService]
}
AModuleが、その後のルートのためにこれを持っている:
は、例えば、ルートルーティングモジュールは、このような何かを見てルートを持って、私は最初からアプリケーションをロードする場合(上で実行
export const AModRoutes: Routes = [
{
path: '', component: AHomeComponent, children: [
{ path: 'building', pathMatch: 'full', component: BuildingComponent },
{ path: 'sitewide', pathMatch: 'full', component: SitewideComponent },
{ path: 'spaces', pathMatch: 'full', loadChildren: '../spaces/spaces.module#SpacesModule' }
]
}
];
ポート4200)、私はクリックして127.0.0.1:4200/A/building
にナビゲートすることができますが、この同じURLに直接ナビゲートすることはできません。これは間違ってベースHREFか何かを設定することが関係している場合、私は疑問に思う
GET http://127.0.0.1:4200/es/inline.bundle.js net::ERR_ABORTED building:20 . . . GET http://127.0.0.1:4200/es/main.bundle.js 404 (Not Found) build:20
:
コンソールは、このようなエラーの束を提供します。私は最近、CLIに切り替えて、ルートモジュールプロバイダーに { provide: APP_BASE_HREF, useValue: '/' }
を追加して機能させる必要がありました。この質問を書きながら
何かもっと私が見つかりました: を私はA/building
、たとえば、に移動したら、私はA/sitewide
にnvigateではなくB/
またはA/spaces
にすることができます。これは、CLI
EDITに切り替える前に、問題ではありませんでした。明確にするために(少なくともそれのほとんど、)ルートルータモジュールの追加
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { LoadGuardService } from "./services/load-guard.service";
export const APPROUTES: Routes =
[
{
path: 'A', loadChildren:
'./A/A.module#AModule',
canActivate: [LoadGuardService]
},
{
path: 'B', loadChildren:
'./B/B.module#BModule',
canActivate: [LoadGuardService],
data: { byPhone: false }
},
...
];
@NgModule({
imports: [RouterModule.forRoot(APPROUTES)],
exports: [RouterModule],
providers: [LoadGuardService]
})
export class AppRoutingModule { }
、ルート・アレイ内の省略記号は、実際のコードではありません。スニペットを短くするだけです
LoadGuardServiceがfalse(サブコンポーネントがアクティブになっているサービスに依存しているかどうか)を返す可能性がありますか?または、RouterModuleが遅れているか、 –
私はLoadGuardServiceを削除してスタブして、常にtrueを返すようにテストしました。私はLoadGuardServiceがfalseを返していたと思うが、ナビゲーションは単に起こらないだろうが、代わりにディレクトリではないA/buildingからアプリケーションをロードしようとしているようだ。 AppRoutingModuleを最初に配置し、インポートに最後に置きましたが、変更はありません。 –
あなたのアプリのルーティングでは 'import:[RouterModule.forRoot(routes)]'を使っていて、 'imports:[RouterModule.forChild(routes)]を使っている子供では?これは私が決して走っていない奇妙なものです、申し訳ありません、私はそれ以上の助けではありません。 –