Angular 9 路线给出空白页面,没有错误

2023-11-30

我刚刚升级到 Angular 9 并使用延迟加载创建了一些子路由。在这些更改之前,我的项目和我的路线运行得很好,但在这两个更改之后,我的项目和路线工作得很好。HomeComponent路线(路径:“”)工作正常,但如果我尝试单击其他路线的链接(使用routerLink),它根本不会重定向,如果我在浏览器中手动编写路线,它会给我一个空白页面没有错误。

总结:项目和路线工作正常,但在我创建角度延迟加载路线后,唯一有效的路线是默认路线(HomeComponent),如果我尝试单击链接转到其他路线,则不会发生任何情况,如果我手动在我的浏览器中输入这些路线,它会给我一个空白页面,没有错误。


应用程序模块.ts


@NgModule({
  declarations: [
    AppComponent,
    HomeComponent,
  ],
  imports: [
    SharedModule,
    HomeModule,
    Mugan86GoogleAnalyticsModule.forRoot({analyticsId: 'XXX', showLog: false}),
    AnimateOnScrollModule.forRoot(),
    BrowserModule.withServerTransition({appId: 'serverApp'}),
    ServiceWorkerModule.register('ngsw-worker.js', {enabled: environment.production}),
  ],
  providers: [
    {provide: ErrorHandler, useClass: RollbarErrorHandler},
    {provide: RollbarService, useFactory: rollbarFactory}
  ],
  bootstrap: [AppComponent],
  exports: [
    SharedModule,
    HomeModule,
  ]
})
export class AppModule {
}

共享模块.ts

@NgModule({
  declarations: [
    FooterComponent,
    LoadingBallsComponent,
    NavbarComponent,
    ScrolledToDirective,
    TrackScrollDirective,
    TopArrowComponent,
    SnackbarComponent,
  ],
  imports: [
    BrowserModule,
    RouterModule,
    AppRoutingModule,
    BrowserAnimationsModule,
    CommonModule,
    FilterModule,
    ReactiveFormsModule,
    FormsModule,
    RecaptchaModule,
    AnimateOnScrollModule
  ],
  exports: [
    BrowserModule,
    CommonModule,
    FooterComponent,
    LoadingBallsComponent,
    NavbarComponent,
    FilterModule,
    AppRoutingModule,
    ReactiveFormsModule,
    FormsModule,
    RecaptchaModule,
    AnimateOnScrollModule,
    ScrolledToDirective,
    TrackScrollDirective,
    TopArrowComponent,
    SnackbarComponent,
    RouterModule,
    BrowserAnimationsModule]
})
export class SharedModule {
}

home.module.ts

@NgModule({
  declarations: [
    CharacteristicsComponent,
    ContactComponent,
    HeaderComponent,
    MainDescriptionComponent,
    InfluencerPromotionComponent,
    SocialMediaComponent,
    BoxItemComponent,
    BandIconComponent,
    ServicesComponent,
  ],
  imports: [
    SharedModule,
  ],
  exports: [
    CharacteristicsComponent,
    ContactComponent,
    HeaderComponent,
    MainDescriptionComponent,
    InfluencerPromotionComponent,
    SocialMediaComponent,
    BoxItemComponent,
    BandIconComponent,
    ServicesComponent
  ]
})
export class HomeModule { }

应用程序路由.module.ts

export const routes: Routes = [
  {path: '', pathMatch: 'full', component: HomeComponent}, // no route specified
  {path: '', component: HomeComponent},
  {path: 'sobre-nosotros', loadChildren: () => import('./components/about-us/about-us.module').then(m => m.AboutUsModule)},
  {
    path: 'preguntas-frecuentes',
    loadChildren: () => import('./components/common-questions/common-questions.module').then(m => m.CommonQuestionsModule)
  },
  {path: 'sitemap', loadChildren: () => import('./components/sitemap/sitemap.module').then(m => m.SitemapModule)},
  {path: '**', component: HomeComponent}, // fallback route (not found - 404)
];

@NgModule({
  imports: [RouterModule.forRoot(routes, {initialNavigation: 'enabled', preloadingStrategy: PreloadAllModules})],
  exports: [RouterModule]
})
export class AppRoutingModule {
}



作为示例,我将显示不起作用的路由之一的模块和路由模块:

关于我们模块.ts

@NgModule({
  declarations: [AboutUsComponent],
  imports: [
    AppModule,
    CommonModule,
    AboutUsRoutingModule,
  ]
})
export class AboutUsModule { }

关于我们-routing.module.ts

const routes: Routes = [{path: '', component: AboutUsComponent}];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class AboutUsRoutingModule {
}


额外的信息

tsconfig.json(角度编译器选项)

  "angularCompilerOptions": {
    "enableIvy": true,
    "fullTemplateTypeCheck": true,
    "strictInjectionParameters": true
  }

角度.json (aot)

"aot": true,

package.json(查看版本)

"dependencies": {
    "@angular/animations": "~9.1.9",
    "@angular/common": "~9.1.9",
    "@angular/compiler": "~9.1.9",
    "@angular/core": "~9.1.9",
    "@angular/forms": "~9.1.9",
    "@angular/platform-browser": "~9.1.9",
    "@angular/platform-browser-dynamic": "~9.1.9",
    "@angular/platform-server": "~9.1.9",
    "@angular/router": "~9.1.9",
    "@angular/service-worker": "~9.1.9",
    "@josee9988/filter-pipe-ngx": "^1.1.0",
    "@nguniversal/express-engine": "^9.1.1",
    "animate.css": "^3.7.2",
    "emailjs-com": "^2.4.1",
    "express": "^4.15.2",
    "mugan86-ng-google-analytics": "^1.1.1",
    "ng-recaptcha": "^5.0.0",
    "ng2-animate-on-scroll": "^2.0.0",
    "rollbar": "^2.16.2",
    "rxjs": "~6.5.5",
    "tslib": "^1.13.0",
    "zone.js": "~0.10.2"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.901.7",
    "@angular/cli": "~9.1.7",
    "@angular/compiler-cli": "~9.1.9",
    "@angular/language-service": "~9.1.9",
    "@nguniversal/builders": "^9.1.1",
    "@types/express": "^4.17.0",
    "@types/jasmine": "~3.3.8",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "^12.11.1",
    "codelyzer": "^5.1.2",
    "jasmine-core": "~3.4.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "^5.0.9",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.1",
    "karma-jasmine": "~2.0.1",
    "karma-jasmine-html-reporter": "^1.5.4",
    "protractor": "^7.0.0",
    "ts-node": "~7.0.0",
    "tslint": "~5.15.0",
    "typescript": "~3.8.3"

我有另一个使用 Ivy 和子路由的项目,我只是按照与上述项目相同的步骤操作,但我发现了所描述的问题。

Edit

我刚刚删除了每条路线的延迟加载和模块/路由模块,应用程序再次运行。所以绝对是问题是由延迟加载引起的特征。


请删除前两条主路由 (HomeComponent)。

在 app-routing.module 中,您可以使用以下命令启用路由调试:

@NgModule({
imports: [
      RouterModule.forRoot(routes, {enableTracing: true}),

也许您可以删除 {initialNavigation: 'enabled', preloadingStrategy: PreloadAllModules}。

你的代码看起来不错。希望调试能为您提供更多信息。

AppRoutingModule 只能在 AppModule 中使用。不允许在延迟加载的子模块之一中引用 AppRoutingModule。

在AppModule中导入BrowserModule、BrowserAnimationsModule和AppRoutingModule。

尽量避免大型共享模块。看:延迟加载 Angular - 使用 Webpack 拆分 NgModules 代码

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 9 路线给出空白页面,没有错误 的相关文章

随机推荐

  • Polars:通过算法取消嵌套列,无需 for 循环

    我正在使用用嵌套结构 有时是多层深度 编写的多个镶木地板数据集 我需要输出一个扁平的 无结构 模式 现在我能想到的唯一方法是使用 for 循环来迭代列 这是一个简单的例子 我在其中进行循环 while len x name for x in
  • emacs24 中的词法评估

    谁能解释一下怎么做eval与 emacs24 一起工作吗 从eval描述 eval is a built in function in C source code eval FORM optional LEXICAL Evaluate FO
  • 如何使用自定义 Dropwizard 过滤器有选择地保护资源

    我正在使用 Dropwizard 0 9 2 我想创建一个不需要 GET 身份验证而需要基本 POST 身份验证的资源 我努力了 Path protectedPing Produces MediaType TEXT PLAIN public
  • pip 缓存文件夹在哪里?

    Python pip 缓存文件夹在哪里 我在安装过程中遇到错误 现在使用缓存文件重新安装软件包 那个目录在哪里 我想对它们进行备份以便将来安装 是否可以 例如我有这个 Using cached cssselect 0 9 1 tar gz
  • 如何将 C++ 字符串转换为 int? [复制]

    这个问题在这里已经有答案了 可能的重复 C 将字符串转换为int 我让用户按顺序输入 9 个数字 我需要将字符串数字转换为 int string num int num int product 10 cout lt lt enter num
  • Magento 前端(会话)cookie

    我在我的 magento 商店的 IE 中出现一些奇怪的行为 丢失了前端 会话 cookie 有人知道在magento代码中前端cookie的设置在哪里吗 Thanks 阿法克 frontend cookie 在分派当前操作之前设置 看一下
  • VB6 中未设置变量的默认值是多少?

    我正在使用一些旧代码 它定义了一个像这样的全局变量 Public myvar 该变量从未被赋值 但稍后在测试中使用 If myvar lt gt somevalue then do something End If 为了某种价值的什么价值
  • X86 编码近调用相对偏移量

    假设我有以下一组说明 00E79E00 E8 AE580000 CALL someprocess 00E7F6B3 00E79E05 85C0 TEST EAX EAX output taken from OllyDbg 如何对近调用 0x
  • [Int] 和 Array 有什么区别?

    let numberList Array 1 10 type Array
  • 方法名称必须以 findBy 或 findOneBy 开头。 Symfony 未定义方法?

    我正在努力通过Symfony2 的第 4 部分 在更新控制器和帮助程序类代码时 我收到以下错误消息 Undefined method getLatestBlogs The method name must start with either
  • 编译时在浮点型和双精度型之间切换

    如果我想在编译时在浮点精度和双精度之间切换 我应该在哪里查看 就像 如果用户想要所有内容都是浮点数而不是双精度 我如何保持这种灵活性 换句话说 我应该如何定义一个可以有条件地浮点或双精度的变量 如果可以在编译时进行切换 一个简单的方法typ
  • 为什么内联 div 的行为与内联 span 不同

    我尝试过内联 div 但它不起作用 很难解释 请看下面的链接 http jsfiddle net CsS5v 1 p style background red SDFDSDSFDSSFDAFASasf br span style backg
  • PHP:如何重命名方法?

    PHP 5 2 中是否可以在运行时重命名类方法 是否可以使用反射来做到这一点 Given class Test public function myMethod echo in my method 我希望能够重命名myMethod to o
  • ng-include 和 ngRoute:如何让它们一起工作? (即路由到 ng-include 中的视图)

    EDITED 我的应用程序具有以下结构 索引 html
  • 如何在 C 中进行 Base64 编码(解码)?

    我在 unsigned char 变量中有二进制数据 我需要在 c 中将它们转换为 PEM base64 我查看了 openssl 库 但找不到任何函数 有谁有任何想法吗 这是我正在使用的 include
  • 静态局部变量什么时候出现?

    这本书Robert Lafore 的 C 面向对象编程 says 静态局部变量具有自动局部变量的可见性 变量 即在包含它的函数内部 然而 其 生命周期与全局变量的生命周期相同 只是它 直到第一次调用该函数时才存在 包含它 此后它在人的一生中
  • 将 ItemsControl ItemSource 绑定到 UserControl 依赖属性

    这是我第一次尝试创建具有依赖属性的用户控件 所以请原谅我对这个主题缺乏了解 我在其中一个页面上创建了一个总体设计 我想将其转换为可重用的用户控件 页面上的原始控件 这就是我试图移植到可重用 UserControl 的控件
  • 比较 2 个对象 PHP

    我需要比较 2 个对象以删除重复项 查找新条目 这些对象不相同 但它们包含相同的用户名密钥 这是布局 数据库对象 array 0 db gt username 0 db gt something 1 db gt username 1 db
  • 如何将多个 LineString 行组合成一个单行集合

    我正在使用 SQL Server 2008 和Geometry数据类型来存储英国道路列表 我从地形测量战略数据集 每条路被分成多行 每行包含一行 A Linestring由一段组成 例如A369由18条独立的线路组成 如下图所示 我想要做的
  • Angular 9 路线给出空白页面,没有错误

    我刚刚升级到 Angular 9 并使用延迟加载创建了一些子路由 在这些更改之前 我的项目和我的路线运行得很好 但在这两个更改之后 我的项目和路线工作得很好 HomeComponent路线 路径 工作正常 但如果我尝试单击其他路线的链接 使