【问题标题】:Cannot read property 'split' of undefined in Angular Routing无法读取角度路由中未定义的属性“拆分”
【发布时间】:2019-08-03 15:03:15
【问题描述】:

我在我的 Angular 应用程序中实现了延迟加载。从 app.routes 文件中,我加载了 Login 和 Dashboard 模块,直到此时,延迟加载一切正常。我在尝试使用 loadChildrens 将其他子路由加载到 dashboard.routes 时遇到问题,即子项中的子项。

app.module

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }

app-routing.module.ts

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';


const routes: Routes = [
  {
    path: 'login',
    loadChildren: 'app/modules/login/login.module#LoginModule'
  },
  {
    path: 'dashboard',
    loadChildren: 'app/modules/dashboard/dashboard.module#DashboardModule'
  },
  { path: '**', redirectTo: 'login', pathMatch: 'full' }
];

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

dashboard.module.ts

import { NgModule } from "@angular/core";
import { MainRoutingModule } from "@app/modules/main/main-routing.module";
import { MainLayoutComponent } from "@app/modules/main/views/main-layout/main-layout.component";
import { BlankComponent } from '../blank/blank.component';

@NgModule({
  imports: [DashboardRoutingModule],
  declarations: [DashboardComponent]
})
export class DashboardModule { }

dashboard-routing.module.ts

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { DashboardComponent } from '../blank/blank.component';

const routes: Routes = [
  {
    path: '',
    component: DashboardComponent,
    children: [
      {
        path: 'clients',
        loadChildren: './../clients/clients.module#CLientsModule'
      },
      {
        path: 'users',
        loadChildren: './../users/users.module#UsersModule'
      },
      { path: '', redirectTo: '/users', pathMatch: 'full' }
    ]
  }
];
@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class DashboardRoutingModule { }

clients.module

import { NgModule } from "@angular/core";

import { CommonModule } from '@angular/common';
import { ClientsComponent } from './clients.component';
import { CLientsRoutingModule } from './clients-routing.module';


@NgModule({
  imports: [
    CommonModule,
    CLientsRoutingModule
  ],
  declarations: [ClientsComponent]
})
export class CLientsModule { }

clients.routing

import { Routes, RouterModule } from '@angular/router';
import { NgModule } from '@angular/core';
import { CLientsComponent } from './clients.component';

const routes: Routes = [
    {
      path: '',
      component: CLientsComponent
    }
  ];
  @NgModule({
    imports: [RouterModule.forChild(routes)],
    exports: [RouterModule]
  })
  export class ClientsRoutingModule { }

enter image description here

这是一个一般性错误。未捕获(承诺):TypeError:无法读取未定义的属性“拆分” TypeError:无法读取未定义的属性“拆分” 在 defaultUrlMatcher (http://localhost:4200/vendor.js:83027:28) 比赛时 (http://localhost:4200/vendor.js:85220:15) 在 ApplyRedirects.push../node_modules/@angular/router/fesm5/router.js.ApplyRedirects.matchSegmentAgainstRoute (http://localhost:4200/vendor.js:85066:18) 在....

【问题讨论】:

    标签: angular split routing undefined lazy-loading


    【解决方案1】:

    当我没有指定路由路径时,我也遇到了这个错误。

    【讨论】:

    • 你能写一个关于如何解决这个错误的详细答案吗?
    • @Sfili_81 我刚刚指定了路径,错误消失了
    【解决方案2】:

    您正在尝试对未定义的变量调用拆分方法。

    如果不查看代码,很难准确地告诉您出了什么问题,但请确保在调用 split 方法之前定义了变量。

    如果你不能保证你会有一个值,你也可以在调用周围添加一个 if 条件来测试你的变量中是否存储了一个值,然后再调用拆分。

    【讨论】:

    • 您好,感谢您的回答,我没有调用split方法,这是浏览器关于角度编译的错误,我的应用程序只调用了几个路由。
    • 您能否编辑您的问题以添加您的路由器代码?
    • 您能否复制打开控制台并进行刷新的错误。这将给出确切的错误和行号。另外请添加一些您尝试过的代码。
    • Angular documentation 似乎处理 loadChildren 属性的方式与 v8 有所不同。你能试试这个吗?
    • 我使用 Angular V7
    猜你喜欢
    • 2021-06-16
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 2015-08-10
    相关资源
    最近更新 更多