angular-cn/packages/core/schematics/migrations/initial-navigation
Adam Plumer 0ec7043490 feat(core): add initialNavigation schematic (#36926)
Add a schematic to update users to the new v11 `initialNavigation`
options for `RouterModule`. This replaces the deprecated/removed
`true`, `false`, `legacy_disabled`, and `legacy_enabled` options
with the newer `enabledBlocking` and `enabledNonBlocking` options.

PR Close #36926
2020-10-14 12:01:07 -07:00
..
google3 feat(core): add initialNavigation schematic (#36926) 2020-10-14 12:01:07 -07:00
BUILD.bazel feat(core): add initialNavigation schematic (#36926) 2020-10-14 12:01:07 -07:00
README.md feat(core): add initialNavigation schematic (#36926) 2020-10-14 12:01:07 -07:00
collector.ts feat(core): add initialNavigation schematic (#36926) 2020-10-14 12:01:07 -07:00
index.ts feat(core): add initialNavigation schematic (#36926) 2020-10-14 12:01:07 -07:00
transform.ts feat(core): add initialNavigation schematic (#36926) 2020-10-14 12:01:07 -07:00
update_recorder.ts feat(core): add initialNavigation schematic (#36926) 2020-10-14 12:01:07 -07:00
util.ts feat(core): add initialNavigation schematic (#36926) 2020-10-14 12:01:07 -07:00

README.md

initialNavigation migration

Automatically migrates the initialNavigation property of the RouterModule to the newly available options: enabledNonBlocking (default), enabledBlocking, and disabled.

Before

import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';

@NgModule({
  imports: [
    RouterModule.forRoot(ROUTES, {initialNavigation: 'legacy_disabled'}),
  ]
})
export class AppModule {
}

After

import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';

@NgModule({
  imports: [
    RouterModule.forRoot(ROUTES, {initialNavigation: 'disabled'}),
  ]
})
export class AppModule {
}

Disclaimer

The migration only covers the most common patterns where developers set the ExtraOptions#InitialNavigation option to an outdated value. Therefore, if a user declares the option using a number of other methods, e.g. shorthand notation, variable declaration, or some other crafty method, they will have to migrate those options by hand. Otherwise, the compiler will error if the types are sufficiently enforced.

The basic migration strategy is as follows:

  • legacy_disabled || false => disabled
  • legacy_enabled || true => enabledNonBlocking (new default)