延迟加载模块路由的子项不起作用

Children of Lazy Loaded Modules routes don't work

我无法使惰性加载模块的路由正常工作。请查看此 stackblitz, it's a copy from the Angular lazy loading example 并进行一些更改。

我做错了什么?

当你有 child-cmps 时,你不应该使用 pathMath: full

有两种可能

  1. 如果您的 orders2 应该嵌套在 orders 组件中,请将路由器出口添加到您的 orders 组件。
<p>
  orders works!
</p>

<router-outlet></router-outlet>
  1. 将订单组件移至子组件:
const routes: Routes = [
  {
    path: "",
    children: [
      {
        path: "",
        component: OrdersComponent
      },
      {
        path: "child",
        component: OrdersComponent2
      }
    ]
  }
];

编辑:

或像这样删除子项和设置:

const routes: Routes = [
  {
    path: "",
    component: OrdersComponent
  },
  {
    path: "child",
    component: OrdersComponent2
  }
];

如果有帮助请告诉我

您将 OrdersComponent2 定义为 OrdersComponent 的子路由:这与延迟加载模块无关。它们属于同一个模块,一旦您导航到 /orders.

就会延迟加载

您通过单击“订购子项”按钮所做的操作是导航到子路径 /orders/child:为此,您需要 orders.component.html template 中的 <router-outlet>。 Angular 将使用该出口显示子视图。

Updated Stackblitz

在您的订单-路由-module.ts中,问题出在您指定路径的地方:

path: "child",

没有带有选择器“app-child”的组件,所以它会给你“无法匹配任何路由”的错误。您的 orders.component.ts 具有带选择器的子组件 “app-orders-2”,所以尝试这个路径,错误应该消失并且内容显示:

path: "orders-2",