我在做 Angular 开发时,遇到如下错误:

core.js:6242 ERROR NullInjectorError: R3InjectorError(AppModule)[ChildrenOutletContexts -> ChildrenOutletContexts -> ChildrenOutletContexts]:
NullInjectorError: No provider for ChildrenOutletContexts!
at NullInjector.get (core.js:1086)
at R3Injector.get (core.js:16969)
at R3Injector.get (core.js:16969)
at R3Injector.get (core.js:16969)
at NgModuleRef$1.get (core.js:36344)
at Object.get (core.js:33987)
at getOrCreateInjectable (core.js:5849)
at Module.ɵɵdirectiveInject (core.js:21118)
at NodeInjectorFactory.RouterOutlet_Factory [as factory] (router.js:9156)
at getNodeInjectable (core.js:5994)

从这个StackOverflow讨论帖子里找到了原因:

该错误是因为 RouterModule.forChild() 生成的模块包含必要的指令和路由,但不包含路由服务 - routing provider. 这就是 RouterModule.forRoot 的用途:它生成一个包含必要指令、路由和路由服务的模块。

解决办法

在 app.module.ts 里调用 RouterModule.forRoot([])

在 feature module 里调用 RouterModule.forChild 传入实际的路由数组即可:

更多Jerry的原创文章,尽在:“汪子熙”:

RouterModule.forRoot 和 RouterModule.forChild 的区别相关推荐

  1. RouterModule.forRoot() called twice

    错误消息: RouterModule.forRoot() called twice. Lazy loaded modules should use RouterModule.forChild() in ...

  2. Angular 运行报错 RouterModule.forRoot() called twice.

    报错原因是 forRoot() 调用了两次 检查这个属性就好了是 app-routing.module 里面调用了 然后 其他模块也调用了 找到其他 forRoot() 改为 forChild() 就 ...

  3. angular框架简介基础与使用(全文2w8字)前端框架angular

    写在前面 本文的所有内容,可以在我的博客上看到,下面是地址.建议去博客看,因为csdn的这篇图片我没上传. 可以转载,但请注明出处 我的博客-点击跳转 https://numbrun.gitee.io ...

  4. Angular4 去掉url中的#,并解决刷新时的404问题

    为什么要去除? Angular官方指出:如果没有足够使用hash风格(#)的理由,还是尽量使用HTML5模式的路由风格: 如果配置了hash风格,在微信支付或是Angular的深路径依然会出404的问 ...

  5. 为什么 SAP 电商云 Spartacus UI RouterModule.forChild 传入的 path 为 null

    RouterModule.forChild 传入的 path 为 null: 注意,RouterModule.forRoot 只能调用一次.RouterModule 有一个 forChild 方法,也 ...

  6. flask框架视图和路由_角度视图,路由和NgModule的解释

    flask框架视图和路由 Angular vs AngularJS (Angular vs AngularJS) AngularJS (versions 1.x) is a JavaScript-ba ...

  7. Angular NgModule 作用域相关问题

    NgModule 是你使用 Angular 编写应用程序时遇到的第一个基本结构,但由于涉及不同的作用域范围,它也是最微妙和最复杂的.如果你想详细了解 NgModule 的相关知识,可以直接参考 Ang ...

  8. Angular Router的组件路由介绍

    这是SitePoint Angular 2+教程的第4部分,有关如何使用Angular CLI创建CRUD应用程序. 在本文中,我们将介绍Angular Router,并了解当浏览器URL更改时它如何 ...

  9. angular复用路由组件_Angular Router的组件路由简介

    angular复用路由组件 这是SitePoint Angular 2+教程的第4部分,有关如何使用Angular CLI创建CRUD应用程序. 在本文中,我们将介绍Angular Router,并了 ...

最新文章

  1. Ardino基础教程 5_按键控制
  2. 基于数据挖掘的旅游推荐APP(一):开篇
  3. matlab平面绘图命令
  4. golang语言学第四课:循环
  5. void 型指针的高阶用法,你掌握了吗?
  6. AFNetWork 学习资源....
  7. 发现Diolar 的边缘检测程序好像也有缺点
  8. 业绩上不去,老板和业务员都有责任,但首先要划分清楚责任
  9. ML Pipeline原理
  10. 整数不少于12可以表示为两个复合数字的和
  11. python远程执行linux命令unzip_Linux unzip命令
  12. 19种音频格式介绍及音质压缩比的比较
  13. 安装nodejs时:The error code is 2503.
  14. 三星android系统应用,三星Android系统文件夹全解
  15. virtualbox 菜单栏不见了
  16. python面试题(面试重点)
  17. [NXP i.MX6ULL] UBOOT-2020.04
  18. c++一维数组找出五个数中的最大和最小值
  19. Visual Studio 2010 简体中文旗舰版(含各版本下载地址 和KEY)
  20. 解除IP黑名单封禁(百度云)

热门文章

  1. SQLServer中round函数
  2. 中文乱码解决方案(Qt4.8.3 + Qt Creator)
  3. Docker创建虚机和swarm
  4. Android的activity的生命周期
  5. C语言 · 黑色星期五
  6. IDEA_Debug_checks references injected by intellilang plugin
  7. 黄聪:WordPress判断当前用户是否为管理员登录
  8. 多核编程文章汇总[z]
  9. Sbo通用数据选择功能的实现
  10. Spring web.xml详解