路由器模块的forChild和forRoot用法

时间:2019-03-06 12:17:03

标签: angular angular-routing

在使用RouterModule时,我对 forRoot 子级和 forChild 的性能有点困惑。

如果我在路由模块中使用RouterModule.forChild(routes),并将其导入 app.module.ts ,然后尝试使用 router-outlet >在 app.component.ts 中,它会引发错误。

按照定义:

forChild创建一个模块,其中包含所有指令和给定的路由,但不包括路由器服务。

路由器服务用于浏览器位置检测,但是为什么它不能找到路由器出口指令,因为定义明确指出它将包含所有指令。

但是,如果在功能模块中完成相同的操作,则可以正常工作。

很抱歉没有发布代码,因为它很长。

2 个答案:

答案 0 :(得分:2)

选中router source code

forChild注册路由,而forRoot注册路由并配置/初始化路由器本身

答案 1 :(得分:1)

RouterModule.forRoot()必须位于AppModule中。它是实例化路由器服务的一种。所有其他模块将使用RouterModule.forChild([])来处理路由。

在一个应用中,您只能使用一种forRoot