簡體   English   中英

angular直接加載帶有嵌套路由器插座的惰性模塊

[英]angular directly load a lazy module with nested router-outlet

我有一個帶有幾個延遲加載模塊的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。

控制台給出了一堆這樣的錯誤:

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

我想知道這是否與錯誤設置基本href或其他東西有關。 我最近切換到CLI並且必須向根模塊提供程序添加{ provide: APP_BASE_HREF, useValue: '/' }以使其正常工作。

我在撰寫這個問題時發現了更多的東西:一旦我導航到A/building ,我可以在A/sitewide sitewide,但不能到B/A/spaces 在切換到CLI之前,這不是問題

編輯:添加根路由器模塊(至少大部分)

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 { }

需要說明的是,Routes數組中的省略號不在實際代碼中。 只是為了縮短片段

我不記得在什么時候我必須向{ provide: APP_BASE_HREF, useValue: '/' }添加{ provide: APP_BASE_HREF, useValue: '/' } ,但是當我這樣做時,我在index.html中注釋掉了<base href="/"> (當時,這似乎工作)。 我取消注釋這條線,現在一切正常。 有人可以解釋APP_BASE_HREF的作用嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM