refactor(router): deprecate no longer needed resolver fields (#45597)

DEPRECATED:

The `resolver` argument of the `RouterOutletContract.activateWith` function and the `resolver` field of the `OutletContext` class are deprecated. Passing component factory resolvers are no longer needed. The `ComponentFactoryResolver`-related symbols were deprecated in `@angular/core` package since v13.

PR Close #45597
This commit is contained in:
Andrew Scott 2022-04-18 14:57:19 -07:00 committed by Dylan Hunn
parent f4fd1a8262
commit 1d2f5c1101
4 changed files with 21 additions and 1 deletions

View file

@ -77,6 +77,8 @@ v14 - v17
| `@angular/forms` | [`FormBuilder.group` legacy options parameter](api/forms/FormBuilder#group) | <!-- v11 --> v14 |
| `@angular/platform-server` | [`renderModuleFactory`](#platform-server) | <!-- v13 --> v15 |
| `@angular/router` | [`relativeLinkResolution`](#relativeLinkResolution) | <!-- v14 --> v16 |
| `@angular/router` | [`resolver` argument in `RouterOutletContract.activateWith`](#router) | <!-- v14 --> v16 |
| `@angular/router` | [`resolver` field of the `OutletContext` class](#router) | <!-- v14 --> v16 |
| `@angular/service-worker` | [`SwUpdate#activated`](api/service-worker/SwUpdate#activated) | <!-- v13 --> v16 |
| `@angular/service-worker` | [`SwUpdate#available`](api/service-worker/SwUpdate#available) | <!-- v13 --> v16 |
| template syntax | [`/deep/`, `>>>`, and `::ng-deep`](#deep-component-style-selector) | <!-- v7 --> unspecified |
@ -147,6 +149,16 @@ In the [API reference section](api) of this site, deprecated APIs are indicated
| [`TestBed.get`](api/core/testing/TestBed#get) | [`TestBed.inject`](api/core/testing/TestBed#inject) | v9 | Same behavior, but type safe. |
| [`async`](api/core/testing/async) | [`waitForAsync`](api/core/testing/waitForAsync) | v10 | Same behavior, but rename to avoid confusion. |
<a id="router"></a>
### &commat;angular/router
| API | Replacement | Deprecation announced | Details |
|:--- |:--- |:--- |:--- |
| [`resolver` argument in `RouterOutletContract.activateWith`](api/router/RouterOutletContract#activatewith) | No replacement needed | v14 | Component factories are not required to create an instance of a component dynamically. Passing a factory resolver via `resolver` argument is no longer needed. |
| [`resolver` field of the `OutletContext` class](api/router/OutletContext#resolver) | No replacement needed | v14 | Component factories are not required to create an instance of a component dynamically. Passing a factory resolver via `resolver` class field is no longer needed. |
<a id="platform-browser-dynamic"></a>
### &commat;angular/platform-browser-dynamic

View file

@ -360,7 +360,7 @@ export class OutletContext {
injector: EnvironmentInjector | null;
// (undocumented)
outlet: RouterOutletContract | null;
// (undocumented)
// @deprecated (undocumented)
resolver: ComponentFactoryResolver | null;
// (undocumented)
route: ActivatedRoute | null;
@ -684,6 +684,7 @@ export interface RouterOutletContract {
activatedRouteData: Data;
activateEvents?: EventEmitter<unknown>;
activateWith(activatedRoute: ActivatedRoute, environmnetInjector: EnvironmentInjector | null): void;
// @deprecated
activateWith(activatedRoute: ActivatedRoute, resolver: ComponentFactoryResolver | null): void;
attach(ref: ComponentRef<unknown>, activatedRoute: ActivatedRoute): void;
attachEvents?: EventEmitter<unknown>;

View file

@ -53,6 +53,9 @@ export interface RouterOutletContract {
activateWith(activatedRoute: ActivatedRoute, environmnetInjector: EnvironmentInjector|null): void;
/**
* Called by the `Router` when the outlet should activate (create a component).
*
* @deprecated Passing a resolver to retrieve a component factory is not required and is
* deprecated since v14.
*/
activateWith(activatedRoute: ActivatedRoute, resolver: ComponentFactoryResolver|null): void;

View file

@ -20,6 +20,10 @@ import {ActivatedRoute} from './router_state';
export class OutletContext {
outlet: RouterOutletContract|null = null;
route: ActivatedRoute|null = null;
/**
* @deprecated Passing a resolver to retrieve a component factory is not required and is
* deprecated since v14.
*/
resolver: ComponentFactoryResolver|null = null;
injector: EnvironmentInjector|null = null;
children = new ChildrenOutletContexts();