From 9f12e7fea434c6d33e1155994e2c228d51520744 Mon Sep 17 00:00:00 2001 From: Andrew Kushnir Date: Tue, 18 Jan 2022 16:39:43 -0800 Subject: [PATCH] docs: deprecate `ComponentFactory` and `ComponentFactoryResolver` symbols (#44749) DEPRECATED: The `ComponentFactory` and `ComponentFactoryResolver` classes are deprecated. Since Ivy, there is no need to resolve Component factories. Please use other APIs where you Component classes can be used directly (without resolving their factories). PR Close #44749 --- aio/content/guide/deprecations.md | 4 ++++ goldens/public-api/core/core.md | 5 +++-- packages/core/src/linker/component_factory.ts | 3 +++ packages/core/src/linker/component_factory_resolver.ts | 3 +++ packages/core/src/linker/ng_module_factory.ts | 3 +++ 5 files changed, 16 insertions(+), 2 deletions(-) diff --git a/aio/content/guide/deprecations.md b/aio/content/guide/deprecations.md index db4d05a9cd4..19504ae5ae0 100644 --- a/aio/content/guide/deprecations.md +++ b/aio/content/guide/deprecations.md @@ -49,6 +49,8 @@ v13 -> v16 | `@angular/core` | [`Compiler`](#core) | v16 | | `@angular/core` | [`CompilerFactory`](#core) | v16 | | `@angular/core` | [`NgModuleFactory`](#core) | v16 | +| `@angular/core` | [`ComponentFactory`](#core) | v16 | +| `@angular/core` | [`ComponentFactoryResolver`](#core) | v16 | | `@angular/platform-browser-dynamic` | [`JitCompilerFactory`](#platform-browser-dynamic) | v16 | | `@angular/forms` | [`ngModel` with reactive forms](#ngmodel-reactive) | v11 | | `@angular/upgrade` | [`@angular/upgrade`](#upgrade) | v11 | @@ -124,6 +126,8 @@ This section contains a complete list all of the currently-deprecated APIs, with | [`CompilerFactory`](api/core/CompilerFactory) | none | v13 | Ivy JIT mode doesn't require accessing this symbol. See [JIT API changes due to ViewEngine deprecation](#jit-api-changes) for additional context. | | [`NgModuleFactory`](api/core/NgModuleFactory) | Use non-factory based framework APIs like [PlatformRef.bootstrapModule](api/core/PlatformRef#bootstrapModule) and [createNgModuleRef](api/core/createNgModuleRef) | v13 | Ivy JIT mode doesn't require accessing this symbol. See [JIT API changes due to ViewEngine deprecation](#jit-api-changes) for additional context. | | [Factory-based signature of `ViewContainerRef.createComponent`](api/core/ViewContainerRef#createComponent) | [Type-based signature of `ViewContainerRef.createComponent`](api/core/ViewContainerRef#createComponent) | v13 | Angular no longer requires component factories to dynamically create components. Use different signature of the `createComponent` method, which allows passing Component class directly. | +| [`ComponentFactory`](api/core/ComponentFactory) | Use non-factory based framework APIs. | v13 | Since Ivy, Component factories are not required. Angular provides other APIs where Component classes can be used directly.| +| [`ComponentFactoryResolver`](api/core/ComponentFactoryResolver) | Use non-factory based framework APIs. | v13 | Since Ivy, Component factories are not required, thus there is no need to resolve them.| {@a testing} diff --git a/goldens/public-api/core/core.md b/goldens/public-api/core/core.md index 387bfbd03b8..aba184d60f2 100644 --- a/goldens/public-api/core/core.md +++ b/goldens/public-api/core/core.md @@ -194,7 +194,7 @@ export interface ComponentDecorator { new (obj: Component): Component; } -// @public +// @public @deprecated export abstract class ComponentFactory { abstract get componentType(): Type; abstract create(injector: Injector, projectableNodes?: any[][], rootSelectorOrNode?: string | any, ngModule?: NgModuleRef): ComponentRef; @@ -210,7 +210,7 @@ export abstract class ComponentFactory { abstract get selector(): string; } -// @public +// @public @deprecated export abstract class ComponentFactoryResolver { // (undocumented) static NULL: ComponentFactoryResolver; @@ -839,6 +839,7 @@ export abstract class NgModuleFactory { // @public export abstract class NgModuleRef { + // @deprecated abstract get componentFactoryResolver(): ComponentFactoryResolver; abstract destroy(): void; abstract get injector(): Injector; diff --git a/packages/core/src/linker/component_factory.ts b/packages/core/src/linker/component_factory.ts index b20fd4184e3..38b73c82085 100644 --- a/packages/core/src/linker/component_factory.ts +++ b/packages/core/src/linker/component_factory.ts @@ -75,6 +75,9 @@ export abstract class ComponentRef { * @see [Dynamic Components](guide/dynamic-component-loader) * * @publicApi + * + * @deprecated Angular no longer requires Component factories. Please use other APIs where + * Component class can be used directly. */ export abstract class ComponentFactory { /** diff --git a/packages/core/src/linker/component_factory_resolver.ts b/packages/core/src/linker/component_factory_resolver.ts index 8bf27e51830..86ab1305ef7 100644 --- a/packages/core/src/linker/component_factory_resolver.ts +++ b/packages/core/src/linker/component_factory_resolver.ts @@ -44,6 +44,9 @@ class _NullComponentFactoryResolver implements ComponentFactoryResolver { * does **not** require resolving component factory: component class can be used directly. * * @publicApi + * + * @deprecated Angular no longer requires Component factories. Please use other APIs where + * Component class can be used directly. */ export abstract class ComponentFactoryResolver { static NULL: ComponentFactoryResolver = (/* @__PURE__ */ new _NullComponentFactoryResolver()); diff --git a/packages/core/src/linker/ng_module_factory.ts b/packages/core/src/linker/ng_module_factory.ts index 26bd5abbf0b..d5aa3440b4e 100644 --- a/packages/core/src/linker/ng_module_factory.ts +++ b/packages/core/src/linker/ng_module_factory.ts @@ -30,6 +30,9 @@ export abstract class NgModuleRef { * Note: since v13, dynamic component creation via * [`ViewContainerRef.createComponent`](api/core/ViewContainerRef#createComponent) * does **not** require resolving component factory: component class can be used directly. + * + * @deprecated Angular no longer requires Component factories. Please use other APIs where + * Component class can be used directly. */ abstract get componentFactoryResolver(): ComponentFactoryResolver;