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;