Since standalone
is still in preview, the documentation gives you no hints. You have to excavate to find some. On medium, Andrew Scott blogged about advancements made by Angular team on the router, when in standalone.
anchorReplacing the RouterModule
In our previous attempt to tear down the AppModule
, the main.ts
was rewritten
// main.ts bootstrap passing all providers from an existing NgModule
// using importProvidersFrom
bootstrapApplication(AppComponent, {
providers: [
importProvidersFrom(RouterModule.forRoot(AppRoutes)),
],
});
The new proposed way is to use provideRouter
// new way with provideRouter in main.ts
bootstrapApplication(AppComponent, {
providers: [
provideRouter(appRoutes),
]
});
anchorRewriting our App Routes with options
Let's revisit our app.route
in StackBlitz project and rewrite it.
// app.route rewriting the router providers using provideRouter
export const AppRouteProviders = [
provideRouter(AppRoutes,
// this is in place of scrollPositionRestoration: 'disabled',
withInMemoryScrolling({
scrollPositionRestoration: 'disabled',
}),
// in place of initialNavigation: 'enabledBlocking'
withEnabledBlockingInitialNavigation(),
// same configuration
withRouterConfig({
paramsInheritanceStrategy: 'always',
onSameUrlNavigation: 'reload'
}),
// in place of preloadingStrategy: PreloadService,
withPreloading(PreloadService),
),
// ...
];
anchorBundle sizes
The article claims that when not using the sub features of the router, tree shaking should result in reduction in bundle size. I could not reproduce that. As a matter of fact, the provideRouter
almost always generated a slightly larger main bundle. The lazy loaded and common bundles were not affected.
Donno. You be the judge.