加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular直接加载带有嵌套路由器插座的惰性模块

发布时间:2020-12-17 16:59:29 所属栏目:安全 来源:网络整理
导读:我有一个带有几个延迟加载模块的Angular CLI应用程序,其中一些包含自己的路由器出口.从应用程序的根目录导航时,我可以轻松访问所有路由.但是,如果我尝试直接路由到延迟加载模块中的路由,则浏览器似乎尝试从不存在的文件夹加载应用程序. 例如,根路由模块的路
我有一个带有几个延迟加载模块的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',component: SitewideComponent },{ path: 'spaces',loadChildren: '../spaces/spaces.module#SpacesModule' }
    ]
  }
];

如果我从头开始加载应用程序(在端口4200上运行),我可以点击并导航到127.0.0.1:4200/A/building,但是我无法直接导航到同一个URL.

控制台给出了一堆这样的错误:

获取http://127.0.0.1:4200/es/inline.bundle.js net :: ERR_ABORTED建筑:20
.
.
.
获取http://127.0.0.1:4200/es/main.bundle.js 404(未找到)build:20

我想知道这是否与错误设置基本href或其他东西有关.我最近切换到CLI并且必须添加
{提供:APP_BASE_HREF,useValue:’/’}到根模块提供程序以使其正常工作.

我在写这个问题时发现的更多内容:
一旦我导航到A / building,我可以在A / sitewide,但不能到B /或A / space.在切换到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',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数组中的省略号不在实际代码中.只是为了缩短片段

解决方法

我不记得在什么时候我必须向app.module添加{provide:APP_BASE_HREF,useValue:’/’},但是当我这样做时,我注释掉了< base href =“/”>在index.html(当时,似乎工作).我取消注释这条线,现在一切正常.有人可以解释APP_BASE_HREF的作用吗?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读