Angular app-routing.module.ts:-错误 TS2322:类型“启用”不可分配给类型“InitialNavigation |” 不明确的'

per*_*000 3 npm typescript npm-start angular

当我将我的项目从 Angular 11 升级到 14 后,我在“ngserve”上遇到了以下错误。

Error: src/app/app-routing.module.ts:107:7 - error TS2322: Type '"enabled"' is not assignable to type 'InitialNavigation | undefined'.

107       initialNavigation: 'enabled',
Run Code Online (Sandbox Code Playgroud)

app-routing.module.ts 的相关代码部分如下。

@NgModule({
  imports: [
    RouterModule.forRoot(routes, {
      initialNavigation: 'enabled',
    }),
  ],
  exports: [RouterModule],
})
Run Code Online (Sandbox Code Playgroud)

该项目在 Angular 11 上运行良好。如何解决 Angular 14 的此问题?

小智 5

在 Angular 14 版本中,“启用”不再是一个选项。

根据官方文档链接

现在有这些选项:

  • 'enabledNonBlocking' -(默认)初始导航在创建根组件后开始。初始导航完成后,引导程序不会被阻止。

  • 'enabledBlocking' - 初始导航在
    创建根组件之前开始。引导程序将被阻止,直到初始
    导航完成。服务器端渲染需要该值才能
    正常工作。

  • 'disabled' - 不执行初始导航。位置
    侦听器是在创建根组件之前设置的。 如果由于某些复杂的初始化逻辑而需要对
    路由器何时开始初始导航进行更多控制,则使用此选项。

所以..你只需要改变

initialNavigation: 'enabled',
Run Code Online (Sandbox Code Playgroud)

为了

initialNavigation: 'enabledNonBlocking',
Run Code Online (Sandbox Code Playgroud)

或者

initialNavigation: 'enabledBlocking',
Run Code Online (Sandbox Code Playgroud)

根据您的需要。