角度路由器:错误范围错误:超出最大调用堆栈大小

时间:2021-07-30 20:20:22

标签: angular angular-router

当我使用带有路由路径的组件时,出现以下错误:

ERROR RangeError: Maximum call stack size exceeded
    at Array.unshift (<anonymous>)
    at findPath (router.js:1210)
    at findPath (router.js:1208)
    at findPath (router.js:1208)
    at findPath (router.js:1208)
    at findPath (router.js:1208)
    at findPath (router.js:1208)
    at findPath (router.js:1208)
    at findPath (router.js:1208)
    at findPath (router.js:1208)

当我移除组件时,错误消失了。我已经成功地将组件与其他路由路径一起使用,所以我不确定这里发生了什么。如果非要我猜的话,我会推测这与模块延迟加载有关。

这是我的路由模块:

import { The_Component } from './the-component.component'
import { RouterModule, Routes } from '@angular/router'
import { NgModule } from '@angular/core'
import { A_Resolver } from './a-resolver.resolver'

const routes: Routes = [
  {
    path: '',
    // **** This component causes the error. Removing it removes the error. ****
    component: The_Component,
    resolve: [A_Resolver],
    children: [
      {
        path: 'some-path',
        loadChildren: () => import('some-module.module')
          .then((m) => m.Some_Module)
      },
      {
        path: '',
        loadChildren: () => import('another-module.module')
          .then((m) => m.Another_Module)
      },
    ]
  }
]
@NgModule({
  imports: [RouterModule.forChild(routes)],
  providers: [A_Resolver],
})
export class The_Routing_Module { }

这个路由模块导入到延迟加载模块中:

import { The_Component } from './the-component.component'
import { Shared_Module } from '@libs/clients/feature'
import { NgModule } from '@angular/core'
import { The_Routing_Module } from './routing/the-routing.module'

@NgModule({
  declarations: [
    The_Component,
  ],
  imports: [
    The_Routing_Module,
    Shared_Module,
  ],
})
export class The_Lazy_Module {}

The_Component 只有 <router-outlet></router-outlet>,因为它是 HTML 并且是一个空组件:

@Component({
  templateUrl: 'the-component.component.html',
  changeDetection: ChangeDetectionStrategy.OnPush,
})
export class The_Component  {}

我在我的路由树中目睹了同样的行为。请注意,上面的惰性模块是从另一个惰性模块加载的。

在路由树的更高位置,我实际上在几种不同的情况下使用了一个带有路由路径的组件,并且没有出现错误。我能够通过从上述延迟加载模块加载另一个延迟加载模块 (Some_Module) 重现此错误。

关于可能导致此问题的任何理论?

0 个答案:

没有答案