diff --git a/goldens/public-api/core/index.api.md b/goldens/public-api/core/index.api.md index 06db65adb70..5bc6148e4a6 100644 --- a/goldens/public-api/core/index.api.md +++ b/goldens/public-api/core/index.api.md @@ -1019,7 +1019,7 @@ export interface InputFunction { }; } -// @public +// @public (undocumented) export interface InputOptions { alias?: string; debugName?: string; diff --git a/packages/core/rxjs-interop/src/output_from_observable.ts b/packages/core/rxjs-interop/src/output_from_observable.ts index d738c07bab3..8a500d0f8a8 100644 --- a/packages/core/rxjs-interop/src/output_from_observable.ts +++ b/packages/core/rxjs-interop/src/output_from_observable.ts @@ -79,6 +79,7 @@ class OutputFromObservableRef implements OutputRef { * nameChange = outputFromObservable(this.nameChange$); * } * ``` + * @see [RxJS interop with component and directive outputs](ecosystem/rxjs-interop/output-interop) * * @publicApi 19.0 */ diff --git a/packages/core/rxjs-interop/src/output_to_observable.ts b/packages/core/rxjs-interop/src/output_to_observable.ts index 9e2a3cb6fd5..f94f2cbf890 100644 --- a/packages/core/rxjs-interop/src/output_to_observable.ts +++ b/packages/core/rxjs-interop/src/output_to_observable.ts @@ -16,6 +16,8 @@ import {Observable} from 'rxjs'; * * You can subscribe to the output via `Observable.subscribe` then. * + * @see [RxJS interop with component and directive outputs](ecosystem/rxjs-interop/output-interop) + * * @publicApi 19.0 */ export function outputToObservable(ref: OutputRef): Observable { diff --git a/packages/core/rxjs-interop/src/rx_resource.ts b/packages/core/rxjs-interop/src/rx_resource.ts index 308bf517f06..e0dd7a7a57d 100644 --- a/packages/core/rxjs-interop/src/rx_resource.ts +++ b/packages/core/rxjs-interop/src/rx_resource.ts @@ -34,6 +34,8 @@ export interface RxResourceOptions extends BaseResourceOptions { * Like `resource` but uses an RxJS based `loader` which maps the request to an `Observable` of the * resource's value. * + * @see [Using rxResource for async data](ecosystem/rxjs-interop#using-rxresource-for-async-data) + * * @experimental */ export function rxResource( diff --git a/packages/core/rxjs-interop/src/take_until_destroyed.ts b/packages/core/rxjs-interop/src/take_until_destroyed.ts index 92842d48a86..49db5aaec6f 100644 --- a/packages/core/rxjs-interop/src/take_until_destroyed.ts +++ b/packages/core/rxjs-interop/src/take_until_destroyed.ts @@ -18,6 +18,8 @@ import {takeUntil} from 'rxjs/operators'; * passed explicitly to use `takeUntilDestroyed` outside of an [injection * context](guide/di/dependency-injection-context). Otherwise, the current `DestroyRef` is injected. * + * @see [Unsubscribing with takeUntilDestroyed](ecosystem/rxjs-interop/take-until-destroyed) + * * @publicApi 19.0 */ export function takeUntilDestroyed(destroyRef?: DestroyRef): MonoTypeOperatorFunction { diff --git a/packages/core/rxjs-interop/src/to_observable.ts b/packages/core/rxjs-interop/src/to_observable.ts index 85889f1c16b..e70a5aa34df 100644 --- a/packages/core/rxjs-interop/src/to_observable.ts +++ b/packages/core/rxjs-interop/src/to_observable.ts @@ -40,6 +40,9 @@ export interface ToObservableOptions { * * `toObservable` must be called in an injection context unless an injector is provided via options. * + * @see [RxJS interop with Angular signals](ecosystem/rxjs-interop) + * @see [Create an RxJS Observable from a signal with toObservable](ecosystem/rxjs-interop#create-an-rxjs-observable-from-a-signal-with-toobservable) + * * @publicApi 20.0 */ export function toObservable(source: Signal, options?: ToObservableOptions): Observable { diff --git a/packages/core/rxjs-interop/src/to_signal.ts b/packages/core/rxjs-interop/src/to_signal.ts index f13e919eb1a..282fee08641 100644 --- a/packages/core/rxjs-interop/src/to_signal.ts +++ b/packages/core/rxjs-interop/src/to_signal.ts @@ -117,6 +117,8 @@ export function toSignal( * If the subscription should persist until the `Observable` itself completes, the `manualCleanup` * option can be specified instead, which disables the automatic subscription teardown. No injection * context is needed in this configuration as well. + * + * @see [RxJS interop with Angular signals](ecosystem/rxjs-interop) */ export function toSignal( source: Observable | Subscribable, diff --git a/packages/core/src/animation/interfaces.ts b/packages/core/src/animation/interfaces.ts index 3302a6cf192..badbcfa093a 100644 --- a/packages/core/src/animation/interfaces.ts +++ b/packages/core/src/animation/interfaces.ts @@ -22,6 +22,8 @@ export const ANIMATIONS_DISABLED = new InjectionToken( * The event type for when `animate.enter` and `animate.leave` are used with function * callbacks. * + * @see [Animating your applications with animate.enter and animate.leave](guide/animations) + * * @publicApi 20.2 */ export type AnimationCallbackEvent = {target: Element; animationComplete: Function}; @@ -34,6 +36,7 @@ export type AnimationCallbackEvent = {target: Element; animationComplete: Functi * for when stylesheets are pruned. * * @publicApi 20.2 + * @see [Animating your applications with animate.enter and animate.leave](guide/animations) */ export const MAX_ANIMATION_TIMEOUT = new InjectionToken( typeof ngDevMode !== 'undefined' && ngDevMode ? 'MaxAnimationTimeout' : '', diff --git a/packages/core/src/application/platform_tokens.ts b/packages/core/src/application/platform_tokens.ts index 0934b665d58..62505048e40 100644 --- a/packages/core/src/application/platform_tokens.ts +++ b/packages/core/src/application/platform_tokens.ts @@ -24,6 +24,8 @@ import {InjectionToken} from '../di/injection_token'; * * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Request `Request` on MDN} * + * @see [Accessing Request and Response via DI](guide/ssr#accessing-request-and-response-via-di) + * * @publicApi */ export const REQUEST = new InjectionToken( @@ -51,6 +53,7 @@ export const REQUEST = new InjectionToken( * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Response/Response `ResponseInit` on MDN} * * @publicApi + * @see [Accessing Request and Response via DI](guide/ssr#accessing-request-and-response-via-di) */ export const RESPONSE_INIT = new InjectionToken( typeof ngDevMode === 'undefined' || ngDevMode ? 'RESPONSE_INIT' : '', @@ -69,6 +72,7 @@ export const RESPONSE_INIT = new InjectionToken( * This token is only available during server-side rendering and will be `null` in other contexts. * * @publicApi + * @see [Accessing Request and Response via DI](guide/ssr#accessing-request-and-response-via-di) */ export const REQUEST_CONTEXT = new InjectionToken( typeof ngDevMode === 'undefined' || ngDevMode ? 'REQUEST_CONTEXT' : '', diff --git a/packages/core/src/authoring/input/input.ts b/packages/core/src/authoring/input/input.ts index a31b5ad05f4..9d0a38136f0 100644 --- a/packages/core/src/authoring/input/input.ts +++ b/packages/core/src/authoring/input/input.ts @@ -40,6 +40,9 @@ export function inputRequiredFunction( * The function exposes an API for also declaring required inputs via the * `input.required` function. * + * @see [Accepting data with input properties](guide/components/inputs) + * @see [Required inputs](guide/components/inputs#required-inputs) + * @see [Input transforms](guide/components/inputs#input-transforms) * @publicAPI * @docsPrivate Ignored because `input` is the canonical API entry. */ @@ -85,6 +88,7 @@ export interface InputFunction { */ required: { /** Declares a required input of type `T`. */ + (opts?: InputOptionsWithoutTransform): InputSignal; /** * Declares a required input of type `T` with a transform function. diff --git a/packages/core/src/authoring/input/input_signal.ts b/packages/core/src/authoring/input/input_signal.ts index 42e70225487..2d01e459d2f 100644 --- a/packages/core/src/authoring/input/input_signal.ts +++ b/packages/core/src/authoring/input/input_signal.ts @@ -15,6 +15,8 @@ import {INPUT_SIGNAL_NODE, InputSignalNode, REQUIRED_UNSET_VALUE} from './input_ /** * @publicAPI + * @see [Input aliases](guide/components/inputs#input-aliases) + * @see [Input transforms](guide/components/inputs#input-transforms) * * Options for signal inputs. */ diff --git a/packages/core/src/authoring/model/model.ts b/packages/core/src/authoring/model/model.ts index 6222d2537d6..8c0b00a14c5 100644 --- a/packages/core/src/authoring/model/model.ts +++ b/packages/core/src/authoring/model/model.ts @@ -34,6 +34,10 @@ export function modelRequiredFunction(opts?: ModelOptions): ModelSignal { * The function exposes an API for also declaring required models via the * `model.required` function. * + * @see [Two-way binding between components](guide/templates/two-way-binding#two-way-binding-between-components) + * @see [Model inputs](guide/components/inputs#model-inputs) + * @see [Customizing model inputs](guide/components/inputs#customizing-model-inputs) + * * @publicAPI * @docsPrivate Ignored because `model` is the canonical API entry. */ @@ -100,6 +104,9 @@ export interface ModelFunction { * this.firstName.set(newFirstName); * } * ``` + * @see [Two-way binding between components](guide/templates/two-way-binding#two-way-binding-between-components) + * @see [Model inputs](guide/components/inputs#model-inputs) + * @see [Customizing model inputs](guide/components/inputs#customizing-model-inputs) * * @publicApi 19.0 * @initializerApiFunction diff --git a/packages/core/src/authoring/output/output.ts b/packages/core/src/authoring/output/output.ts index cd38a773e5a..452c40bb908 100644 --- a/packages/core/src/authoring/output/output.ts +++ b/packages/core/src/authoring/output/output.ts @@ -13,6 +13,8 @@ import {OutputEmitterRef} from './output_emitter_ref'; /** * Options for declaring an output. * + * @see [Customizing output names](guide/components/outputs#customizing-output-names) + * * @publicApi 19.0 */ export interface OutputOptions { @@ -58,6 +60,9 @@ export interface OutputOptions { * this.nameChange.emit(newName); * } * ``` + * + * @see [Custom events with outputs](guide/components/outputs#customizing-output-names) + * * @initializerApiFunction {"showTypesInSignaturePreview": true} * @publicApi 19.0 */ diff --git a/packages/core/src/authoring/output/output_emitter_ref.ts b/packages/core/src/authoring/output/output_emitter_ref.ts index d9462903a81..bb97be5776f 100644 --- a/packages/core/src/authoring/output/output_emitter_ref.ts +++ b/packages/core/src/authoring/output/output_emitter_ref.ts @@ -26,6 +26,8 @@ import {OutputRef, OutputRefSubscription} from './output_ref'; * * ``` * + * @see [Custom events with outputs](guide/components/outputs) + * * @publicAPI */ export class OutputEmitterRef implements OutputRef { diff --git a/packages/core/src/authoring/output/output_ref.ts b/packages/core/src/authoring/output/output_ref.ts index b95528e11fd..c978282a9ee 100644 --- a/packages/core/src/authoring/output/output_ref.ts +++ b/packages/core/src/authoring/output/output_ref.ts @@ -15,6 +15,8 @@ import {DestroyRef} from '../../linker/destroy_ref'; * Note: Angular will automatically clean up subscriptions * when the directive/component of the output is destroyed. * + * @see [Subscribing to outputs programmatically](guide/components/outputs#subscribing-to-outputs-programmatically) + * * @publicAPI */ export interface OutputRefSubscription { @@ -25,6 +27,7 @@ export interface OutputRefSubscription { * A reference to an Angular output. * * @publicAPI + * @see [Subscribing to outputs programmatically](guide/components/outputs#subscribing-to-outputs-programmatically) */ export interface OutputRef { /** diff --git a/packages/core/src/authoring/queries.ts b/packages/core/src/authoring/queries.ts index a6c04cd304c..8b5393bc46c 100644 --- a/packages/core/src/authoring/queries.ts +++ b/packages/core/src/authoring/queries.ts @@ -107,6 +107,8 @@ export interface ViewChildFunction { * * @publicApi 19.0 * @initializerApiFunction + * @see [Referencing component children with queries](guide/components/queries) + * @see [Required queries](guide/components/queries#required-queries) */ export const viewChild: ViewChildFunction = (() => { // Note: This may be considered a side-effect, but nothing will depend on @@ -147,6 +149,8 @@ export function viewChildren( * * @initializerApiFunction * @publicApi 19.0 + * @see [Referencing component children with queries](guide/components/queries) + * @see [Required queries](guide/components/queries#required-queries) */ export function viewChildren( locator: ProviderToken | string, @@ -310,6 +314,8 @@ export function contentChildren( * * @initializerApiFunction * @publicApi 19.0 + * @see [Referencing component children with queries](guide/components/queries) + * @see [Content queries](guide/components/queries#content-queries) */ export function contentChildren( locator: ProviderToken | string, diff --git a/packages/core/src/change_detection/scheduling/zoneless_scheduling_impl.ts b/packages/core/src/change_detection/scheduling/zoneless_scheduling_impl.ts index 278621ee9d6..07743e75cb7 100644 --- a/packages/core/src/change_detection/scheduling/zoneless_scheduling_impl.ts +++ b/packages/core/src/change_detection/scheduling/zoneless_scheduling_impl.ts @@ -368,6 +368,7 @@ export class ChangeDetectionSchedulerImpl implements ChangeDetectionScheduler { * @publicApi 20.2 * * @see {@link /api/platform-browser/bootstrapApplication bootstrapApplication} + * @see [Angular without ZoneJS (Zoneless)](guide/zoneless) */ export function provideZonelessChangeDetection(): EnvironmentProviders { performanceMarkFeature('NgZoneless'); diff --git a/packages/core/src/di/contextual.ts b/packages/core/src/di/contextual.ts index 540d86ef69c..7eb6871521e 100644 --- a/packages/core/src/di/contextual.ts +++ b/packages/core/src/di/contextual.ts @@ -26,6 +26,8 @@ import {Injector as PrimitivesInjector} from '@angular/core/primitives/di'; * from the given `Injector`. Note that `inject` is only usable synchronously, and cannot be used in * any asynchronous callbacks or after any `await` points. * + * @see [Run within an injection context](guide/di/dependency-injection-context#run-within-an-injection-context) + * * @param injector the injector which will satisfy calls to [`inject`](api/core/inject) while `fn` * is executing * @param fn the closure to be run in the context of `injector` diff --git a/packages/core/src/di/forward_ref.ts b/packages/core/src/di/forward_ref.ts index 0c61eb625ed..726a0111608 100644 --- a/packages/core/src/di/forward_ref.ts +++ b/packages/core/src/di/forward_ref.ts @@ -63,7 +63,7 @@ const __forward_ref__ = getClosureSafeProperty({__forward_ref__: getClosureSafeP * hideParent = input.required(); * } * ``` - * + * @see [Resolve circular dependencies with a forward reference](guide/di/di-in-action#resolve-circular-dependencies-with-a-forward-reference) * @publicApi */ export function forwardRef(forwardRefFn: ForwardRefFn): Type { diff --git a/packages/core/src/di/injectable.ts b/packages/core/src/di/injectable.ts index 1f03f57e0db..139beeff9c2 100644 --- a/packages/core/src/di/injectable.ts +++ b/packages/core/src/di/injectable.ts @@ -45,7 +45,8 @@ export interface InjectableDecorator { * provided and injected as a dependency. * * @see [Introduction to Services and DI](guide/di) - * @see [Dependency Injection Guide](guide/di/dependency-injection) + * @see [Creating and using services](guide/di/creating-and-using-services) + * @see [Defining dependency providers](guide/di/defining-dependency-providers) * * @usageNotes * @@ -72,6 +73,7 @@ export interface InjectableDecorator { /** * Type of the Injectable metadata. * + * * @publicApi */ export interface Injectable { diff --git a/packages/core/src/di/injection_token.ts b/packages/core/src/di/injection_token.ts index 8b2fd8efecf..4912c89a4b8 100644 --- a/packages/core/src/di/injection_token.ts +++ b/packages/core/src/di/injection_token.ts @@ -57,6 +57,9 @@ import {ɵɵdefineInjectable} from './interface/defs'; * * {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'} * + * + * @see [What is an InjectionToken?](guide/di/defining-dependency-providers#what-is-an-injectiontoken) + * * @publicApi */ export class InjectionToken { diff --git a/packages/core/src/di/injector.ts b/packages/core/src/di/injector.ts index bac3031c492..22f99df8f91 100644 --- a/packages/core/src/di/injector.ts +++ b/packages/core/src/di/injector.ts @@ -38,6 +38,8 @@ import {ProviderToken} from './provider_token'; * * {@example core/di/ts/injector_spec.ts region='injectInjector'} * + * @see [Types of injector hierarchies](guide/di/hierarchical-dependency-injection#types-of-injector-hierarchies) + * * @publicApi */ export abstract class Injector { diff --git a/packages/core/src/di/injector_compatibility.ts b/packages/core/src/di/injector_compatibility.ts index 7b2b026fa82..ed5e5599d5e 100644 --- a/packages/core/src/di/injector_compatibility.ts +++ b/packages/core/src/di/injector_compatibility.ts @@ -286,6 +286,8 @@ export function inject(token: HostAttributeToken, options: {optional: false}): s * } * ``` * + * @see [Injecting dependencies with inject()](guide/di#injecting-dependencies-with-inject) + * * @publicApi */ export function inject(token: ProviderToken | HostAttributeToken, options?: InjectOptions) { diff --git a/packages/core/src/di/r3_injector.ts b/packages/core/src/di/r3_injector.ts index 02d607e0958..0983351b53a 100644 --- a/packages/core/src/di/r3_injector.ts +++ b/packages/core/src/di/r3_injector.ts @@ -123,6 +123,8 @@ interface Record { * An `Injector` that's part of the environment injector hierarchy, which exists outside of the * component tree. * + * @see [Types of injector hierarchies](guide/di/hierarchical-dependency-injection#types-of-injector-hierarchies) + * * @publicApi */ export abstract class EnvironmentInjector implements Injector { diff --git a/packages/core/src/error_handler.ts b/packages/core/src/error_handler.ts index 8e547a3d83f..8bd18d26593 100644 --- a/packages/core/src/error_handler.ts +++ b/packages/core/src/error_handler.ts @@ -149,6 +149,8 @@ const globalErrorListeners = new InjectionToken(ngDevMode ? 'GlobalErrorLi * * The listeners added are for the window's 'unhandledrejection' and 'error' events. * + * @see [Global error listeners](best-practices/error-handling#global-error-listeners) + * * @publicApi */ export function provideBrowserGlobalErrorListeners(): EnvironmentProviders { diff --git a/packages/core/src/event_emitter.ts b/packages/core/src/event_emitter.ts index 7ac64d981de..37a941fa1ec 100644 --- a/packages/core/src/event_emitter.ts +++ b/packages/core/src/event_emitter.ts @@ -63,6 +63,8 @@ import {PendingTasksInternal} from './pending_tasks'; * * ``` * + * @see [Declaring outputs with the @Output decorator](guide/components/outputs#declaring-outputs-with-the-output-decorator) + * * @publicApi */ export interface EventEmitter extends Subject, OutputRef { diff --git a/packages/core/src/hydration/api.ts b/packages/core/src/hydration/api.ts index 617c1106839..e9a9932464c 100644 --- a/packages/core/src/hydration/api.ts +++ b/packages/core/src/hydration/api.ts @@ -315,6 +315,7 @@ export function withDomHydration(): EnvironmentProviders { /** * Returns a set of providers required to setup support for i18n hydration. * Requires hydration to be enabled separately. + * @see [I18N](guide/hydration#i18n) */ export function withI18nSupport(): Provider[] { return [ @@ -340,6 +341,7 @@ export function withI18nSupport(): Provider[] { * Returns a set of providers required to setup support for incremental hydration. * Requires hydration to be enabled separately. * Enabling incremental hydration also enables event replay for the entire app. + * @see [Incremental Hydration](guide/incremental-hydration#how-do-you-enable-incremental-hydration-in-angular) */ export function withIncrementalHydration(): Provider[] { const providers: Provider[] = [ diff --git a/packages/core/src/hydration/event_replay.ts b/packages/core/src/hydration/event_replay.ts index 93680f3a7a2..471f868c405 100644 --- a/packages/core/src/hydration/event_replay.ts +++ b/packages/core/src/hydration/event_replay.ts @@ -72,6 +72,9 @@ function shouldEnableEventReplay(injector: Injector) { /** * Returns a set of providers required to setup support for event replay. * Requires hydration to be enabled separately. + * + * @see [Capturing and replaying event](guide/hydration#capturing-and-replaying-events) + * */ export function withEventReplay(): Provider[] { const providers: Provider[] = [ diff --git a/packages/core/src/linker/element_ref.ts b/packages/core/src/linker/element_ref.ts index c48cf6bb602..7210b0f56e1 100644 --- a/packages/core/src/linker/element_ref.ts +++ b/packages/core/src/linker/element_ref.ts @@ -42,6 +42,8 @@ export function createElementRef(tNode: TNode, lView: LView): ElementRef { * XSS attacks. Carefully review any use of `ElementRef` in your code. For more detail, see the * [Security Guide](https://g.co/ng/security). * + * @see [Using DOM APIs](guide/components/dom-apis) + * * @publicApi */ // Note: We don't expose things like `Injector`, `ViewContainer`, ... here, diff --git a/packages/core/src/metadata/directives.ts b/packages/core/src/metadata/directives.ts index e35f9f69ee2..a6b56cad34a 100644 --- a/packages/core/src/metadata/directives.ts +++ b/packages/core/src/metadata/directives.ts @@ -100,6 +100,12 @@ export interface DirectiveDecorator { /** * Directive decorator and metadata. * + * @see [Built-in directives](guide/directives) + * @see [Including inputs and outputs](guide/directives/directive-composition-api#including-inputs-and-outputs) + * @see [Assigning a reference to an Angular directive](guide/templates/variables#assigning-a-reference-to-an-angular-directive) + * @see [Referencing component children with queries](guide/components/queries) + * @see [Binding to the host element](guide/components/host-elements#binding-to-the-host-element) + * @see [Host directive semantics](guide/directives/directive-composition-api#host-directive-semantics) * @Annotation * @publicApi */ @@ -528,6 +534,11 @@ export interface ComponentDecorator { /** * Supplies configuration metadata for an Angular component. * + * @see [Anatomy of a component](guide/components) + * @see [ChangeDetectionStrategy](guide/components/advanced-configuration#changedetectionstrategy) + * @see [Using the viewProviders array](guide/di/hierarchical-dependency-injection#using-the-viewproviders-array) + * @see [Style scoping](guide/components/styling#style-scoping) + * * @publicApi */ export interface Component extends Directive { @@ -716,7 +727,7 @@ export interface PipeDecorator { * to a template. To make it a member of an NgModule, * list it in the `declarations` field of the `NgModule` metadata. * - * @see [Style Guide: Pipe Names](style-guide#02-09) + * @see [Pipes](/guide/templates/pipes) * */ (obj: Pipe): TypeDecorator; diff --git a/packages/core/src/pending_tasks.ts b/packages/core/src/pending_tasks.ts index e9809c9cbd5..728306ee637 100644 --- a/packages/core/src/pending_tasks.ts +++ b/packages/core/src/pending_tasks.ts @@ -110,6 +110,9 @@ export class PendingTasksInternal implements OnDestroy { * taskCleanup(); * ``` * + * + * @see [PendingTasks for Server Side Rendering (SSR)](guide/zoneless#pendingtasks-for-server-side-rendering-ssr) + * * @publicApi 20.0 */ export class PendingTasks { diff --git a/packages/core/src/render3/after_render/hooks.ts b/packages/core/src/render3/after_render/hooks.ts index ede69f2f2b1..bebdbbb6320 100644 --- a/packages/core/src/render3/after_render/hooks.ts +++ b/packages/core/src/render3/after_render/hooks.ts @@ -129,6 +129,8 @@ export interface AfterRenderOptions { * } * ``` * + * @see [afterEveryRender and afterNextRender](guide/components/lifecycle#aftereveryrender-and-afternextrender) + * * @publicApi 20.0 */ export function afterEveryRender( @@ -309,6 +311,7 @@ export function afterEveryRender( * ``` * * @publicApi 20.0 + * @see [afterEveryRender and afterNextRender](guide/components/lifecycle#aftereveryrender-and-afternextrender) */ export function afterNextRender( spec: { diff --git a/packages/core/src/render3/component.ts b/packages/core/src/render3/component.ts index e9a5ec1668c..44c9f1233d9 100644 --- a/packages/core/src/render3/component.ts +++ b/packages/core/src/render3/component.ts @@ -78,6 +78,9 @@ import {assertComponentDef} from './errors'; * * `bindings` (optional): Bindings to apply to the root component. * @returns ComponentRef instance that represents a given Component. * + * @see [Host view using `ViewContainerRef.createComponent`](guide/components/programmatic-rendering#host-view-using-viewcontainerrefcreatecomponent) + * @see [Popup attached to `document.body` with `createComponent` + `hostElement`](guide/components/programmatic-rendering#popup-attached-to-documentbody-with-createcomponent--hostelement) + * * @publicApi */ export function createComponent( diff --git a/packages/core/src/render3/debug/chrome_dev_tools_performance.ts b/packages/core/src/render3/debug/chrome_dev_tools_performance.ts index d6e8196772c..d9312981ea0 100644 --- a/packages/core/src/render3/debug/chrome_dev_tools_performance.ts +++ b/packages/core/src/render3/debug/chrome_dev_tools_performance.ts @@ -231,6 +231,7 @@ function getProviderTokenMeasureName(token: any) { * @experimental * * @returns a function that can be invoked to stop sending profiling data. + * @see [Profiling with the Chrome DevTools](best-practices/profiling-with-chrome-devtools#recording-a-profile) */ export function enableProfiling() { performanceMarkFeature('Chrome DevTools profiling'); diff --git a/packages/core/src/render3/dynamic_bindings.ts b/packages/core/src/render3/dynamic_bindings.ts index 703e46f0e9b..f6e7f978621 100644 --- a/packages/core/src/render3/dynamic_bindings.ts +++ b/packages/core/src/render3/dynamic_bindings.ts @@ -117,6 +117,7 @@ function inputBindingUpdate(targetDirectiveIdx: number, publicName: string, valu * bindings: [inputBinding('disabled', isDisabled)] * }); * ``` + * @see [Binding inputs, outputs and setting host directives at creation](guide/components/programmatic-rendering#binding-inputs-outputs-and-setting-host-directives-at-creation) */ export function inputBinding(publicName: string, value: () => unknown): Binding { // Note: ideally we would use a class here, but it seems like they @@ -149,6 +150,7 @@ export function inputBinding(publicName: string, value: () => unknown): Binding * ], * }); * ``` + * @see [Binding inputs, outputs and setting host directives at creation](guide/components/programmatic-rendering#binding-inputs-outputs-and-setting-host-directives-at-creation) */ export function outputBinding(eventName: string, listener: (event: T) => unknown): Binding { // Note: ideally we would use a class here, but it seems like they @@ -186,6 +188,7 @@ export function outputBinding(eventName: string, listener: (event: T) => unkn * ], * }); * ``` + * @see [Binding inputs, outputs and setting host directives at creation](guide/components/programmatic-rendering#binding-inputs-outputs-and-setting-host-directives-at-creation) */ export function twoWayBinding(publicName: string, value: WritableSignal): Binding { const input = inputBinding(publicName, value) as BindingInternal; diff --git a/packages/core/src/render3/reactivity/computed.ts b/packages/core/src/render3/reactivity/computed.ts index 95d856c6f07..3de2622d5f5 100644 --- a/packages/core/src/render3/reactivity/computed.ts +++ b/packages/core/src/render3/reactivity/computed.ts @@ -27,6 +27,7 @@ export interface CreateComputedOptions { /** * Create a computed `Signal` which derives a reactive value from an expression. + * @see [Computed signals](guide/signals#computed-signals) */ export function computed(computation: () => T, options?: CreateComputedOptions): Signal { const getter = createComputed(computation, options?.equal); diff --git a/packages/core/src/render3/reactivity/effect.ts b/packages/core/src/render3/reactivity/effect.ts index 8aa7eefb02e..4f249fb11dd 100644 --- a/packages/core/src/render3/reactivity/effect.ts +++ b/packages/core/src/render3/reactivity/effect.ts @@ -98,6 +98,8 @@ export interface CreateEffectOptions { * before the next effect run. The cleanup function makes it possible to "cancel" any work that the * previous effect run might have started. * + * @see [Effect cleanup functions](guide/signals#effect-cleanup-functions) + * * @publicApi 20.0 */ export type EffectCleanupFn = () => void; @@ -105,6 +107,8 @@ export type EffectCleanupFn = () => void; /** * A callback passed to the effect function that makes it possible to register cleanup logic. * + * @see [Effect cleanup functions](guide/signals#effect-cleanup-functions) + * * @publicApi 20.0 */ export type EffectCleanupRegisterFn = (cleanupFn: EffectCleanupFn) => void; @@ -125,6 +129,8 @@ export type EffectCleanupRegisterFn = (cleanupFn: EffectCleanupFn) => void; * * `effect()` must be run in injection context, unless the `injector` option is manually specified. * + * @see [Effects](guide/signals#effects) + * * @publicApi 20.0 */ export function effect( diff --git a/packages/core/src/render3/reactivity/linked_signal.ts b/packages/core/src/render3/reactivity/linked_signal.ts index 1de15014c8b..ba6d156be99 100644 --- a/packages/core/src/render3/reactivity/linked_signal.ts +++ b/packages/core/src/render3/reactivity/linked_signal.ts @@ -37,6 +37,7 @@ export function linkedSignal( * Note: The computation is reactive, meaning the linked signal will automatically update whenever any of the signals used within the computation change. * * @publicApi 20.0 + * @see [Dependent state with linkedSignal](guide/signals/linked-signal) */ export function linkedSignal(options: { source: () => S; diff --git a/packages/core/src/render3/reactivity/signal.ts b/packages/core/src/render3/reactivity/signal.ts index 9f0f9b49b7d..30014d26132 100644 --- a/packages/core/src/render3/reactivity/signal.ts +++ b/packages/core/src/render3/reactivity/signal.ts @@ -74,6 +74,7 @@ export interface CreateSignalOptions { /** * Create a `Signal` that can be set or updated directly. + * @see [Angular Signals](guide/signals) */ export function signal(initialValue: T, options?: CreateSignalOptions): WritableSignal { const [get, set, update] = createSignal(initialValue, options?.equal); diff --git a/packages/core/src/render3/reactivity/untracked.ts b/packages/core/src/render3/reactivity/untracked.ts index 5203ae47c42..885cdb0105b 100644 --- a/packages/core/src/render3/reactivity/untracked.ts +++ b/packages/core/src/render3/reactivity/untracked.ts @@ -11,6 +11,7 @@ import {untracked as untrackedPrimitive} from '../../../primitives/signals'; /** * Execute an arbitrary function in a non-reactive (non-tracking) context. The executed function * can, optionally, return a value. + * @see [Reading without tracking dependencies](guide/signals#reading-without-tracking-dependencies) */ export function untracked(nonReactiveReadsFn: () => T): T { return untrackedPrimitive(nonReactiveReadsFn); diff --git a/packages/core/src/resource/resource.ts b/packages/core/src/resource/resource.ts index 04e3bdcf858..7958dbaf8f3 100644 --- a/packages/core/src/resource/resource.ts +++ b/packages/core/src/resource/resource.ts @@ -38,6 +38,8 @@ import {DestroyRef} from '../linker/destroy_ref'; * `resource` will cancel in-progress loads via the `AbortSignal` when destroyed or when a new * request object becomes available, which could prematurely abort mutations. * + * @see [Async reactivity with resources](guide/signals/resource) + * * @experimental 19.0 */ export function resource( @@ -53,6 +55,7 @@ export function resource( * request object becomes available, which could prematurely abort mutations. * * @experimental 19.0 + * @see [Async reactivity with resources](guide/signals/resource) */ export function resource(options: ResourceOptions): ResourceRef; export function resource(options: ResourceOptions): ResourceRef { diff --git a/packages/core/src/util/coercion.ts b/packages/core/src/util/coercion.ts index 37a92110432..e6f6f562b49 100644 --- a/packages/core/src/util/coercion.ts +++ b/packages/core/src/util/coercion.ts @@ -16,6 +16,8 @@ * ``` * @param value Value to be transformed. * + * @see [Built-in transformations](guide/components/inputs#built-in-transformations) + * * @publicApi */ export function booleanAttribute(value: unknown): boolean { @@ -34,6 +36,7 @@ export function booleanAttribute(value: unknown): boolean { * ``` * * @publicApi + * @see [Built-in transformations](guide/components/inputs#built-in-transformations) */ export function numberAttribute(value: unknown, fallbackValue = NaN): number { // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string, diff --git a/packages/core/src/zone/ng_zone.ts b/packages/core/src/zone/ng_zone.ts index 80e9f1e21f6..f60ebaf389f 100644 --- a/packages/core/src/zone/ng_zone.ts +++ b/packages/core/src/zone/ng_zone.ts @@ -99,6 +99,8 @@ let ngZoneInstanceId = 0; * } * ``` * + * @see [Resolving zone pollution](best-practices/zone-pollution#run-tasks-outside-ngzone) + * * @publicApi */ export class NgZone {