Deliver web apps with confidence 🚀
Commit | Description |
---|---|
capture data bindings for content projection purposes in blocks (#54876) |
Commit | Description |
---|---|
symbol feature detection for the compiler (#54711) |
Commit | Description |
---|---|
Prevent markForCheck during change detection from causing infinite loops (#54900) |
Commit | Description |
---|---|
unused RESOURCE_CACHE_PROVIDER API has been removed (#54875) |
Commit | Description |
---|---|
Allow Route.redirectTo to be a function which returns a string or UrlTree (#52606) | |
Routed components never inherit RouterOutlet EnvironmentInjector (#54265) |
RESOURCE_CACHE_PROVIDER
APIs have been removed.deprecated platformDynamicServer
has been removed. Add an import @angular/compiler
and replace the usage with platformServer
deprecated ServerTransferStateModule
has been removed. TransferState
can be use without providing this module.
deprecated useAbsoluteUrl
and baseUrl
been removed from PlatformConfig
. Provide and absolute url
instead.
Legacy handling or Node.js URL parsing has been removed from ServerPlatformLocation
.
The main differences are;
pathname
is always suffixed with a /
.port
is empty when http:
protocol and port in url is 80
port
is empty when https:
protocol and port in url is 443
Route.redirectTo
to be a function
in addition to the previous string. Code which expects redirectTo
to
only be a string on Route
objects will need to be adjusted.RouterOutlet
. This means that providers available only to the
component that defines the RouterOutlet
will no longer be available to
route components in any circumstances. This was already the case
whenever routes defined providers, either through lazy loading an
NgModule
or through explicit providers
on the route config.Commit | Description |
---|---|
preserve original reference to non-deferrable dependency (#54759) |
Commit | Description |
---|---|
Add ability to return UrlTree with NavigationBehaviorOptions from guards (#45023) |
OnPush
views at the root of the application need to
be marked dirty for their host bindings to refresh. Previously, the host
bindings were refreshed for all root views without respecting the
OnPush
change detection strategy.OnPush
views at the root of the application need to
be marked dirty for their host bindings to refresh. Previously, the host
bindings were refreshed for all root views without respecting the
OnPush
change detection strategy.ComponentFixture
autoDetect
feature will no
longer refresh the component's host view when the component is OnPush
and not marked dirty. This exposes existing issues in components which
claim to be OnPush
but do not correctly call markForCheck
when they
need to be refreshed. If this change causes test failures, the easiest
fix is to change the component to ChangeDetectionStrategy.Default
.ApplicationRef
that are still marked for
check after one round completes. In rare cases, this can result in infinite
loops when certain patterns continue to mark views for check using
ChangeDetectorRef.detectChanges
. This will be surfaced as a runtime
error with the NG0103
code.ComponentFixture.autoDetect
feature now executes
change detection for the fixture within ApplicationRef.tick
. This more
closely matches the behavior of how a component would refresh in
production. The order of component refresh in tests may be slightly
affected as a result, especially when dealing with additional components
attached to the application, such as dialogs. Tests sensitive to this
type of change (such as screenshot tests) may need to be updated.
Concretely, this change means that the component will refresh before
additional views attached to ApplicationRef
(i.e. dialog components).
Prior to this change, the fixture component would refresh after other
views attached to the application.NgZone
is now the first of either
setTimeout
or requestAnimationFrame
. Code which relies on this
timing (usually by accident) will need to be adjusted. If a callback
needs to execute after change detection, we recommend afterNextRender
instead of something like setTimeout
.ExpressionChangedAfterItHasBeenCheckedError
or not be refreshed until
some future round of change detection. In rare circumstances, this
correction can cause issues. We identified one instance that relied on
the previous behavior by reading a value on initialization which was
queued to be updated in a microtask instead of being available in the
current change detection round. The component only read this value during
initialization and did not read it again after the microtask updated it.RedirectCommand
for redirects
in addition to UrlTree
. Code which expects only boolean
or UrlTree
values in Route
types will need to be adjusted.Commit | Description |
---|---|
exclude caching for authenticated HTTP requests (#54746) |
Commit | Description |
---|---|
Add reusable types for router guards (#54580) | |
Navigations triggered by cancellation events should cancel previous navigation (#54710) |
Commit | Description |
---|---|
support ModuleWithProviders literal detection with typeof (#54650) |
|
unwrap expressions with type parameters in query read property (#54647) |
Commit | Description |
---|---|
Add reusable types for router guards (#54580) |
Commit | Description |
---|---|
unwrap expressions with type parameters in query read property (#54647) |
Commit | Description |
---|---|
AsyncPipe should not call markForCheck on subscription (#54554) |
Commit | Description |
---|---|
catch function instance properties in interpolated signal diagnostic (#54325) | |
identify aliased initializer functions (#54480) | |
identify aliased initializer functions (#54609) |
Commit | Description |
---|---|
collect providers from NgModules while rendering @defer block (#52881) |
|
fix typo in injectors.svg file (#54596) |
Commit | Description |
---|---|
resolve infinite loop for a single line element with a long tag name and angle bracket on a new line (#54588) |
Commit | Description |
---|---|
AsyncPipe should not call markForCheck on subscription (#54554) |
Commit | Description |
---|---|
Enable template pipeline by default. (#54571) |
Commit | Description |
---|---|
resolve infinite loop for a single line element with a long tag name and angle bracket on a new line (#54588) |
Commit | Description |
---|---|
image placeholder not removed in OnPush component (#54515) |
Commit | Description |
---|---|
adding the inert property to the "SCHEMA" array (#53148) |
Commit | Description |
---|---|
correctly detect deferred dependencies across scoped nodes (#54499) | |
use correct symbol name for default imported symbols in defer blocks (#54495) |
Commit | Description |
---|---|
properly execute content queries for root components (#54457) |
Commit | Description |
---|---|
Fix cf migration regular expression to include underscores (#54533) |
Commit | Description |
---|---|
Clear internal transition when navigation finalizes (#54261) |