Skip to content

fix(core): accept static option in ContentChildren and ViewChildren typings#68803

Open
mohanrajvenkatesan23-04 wants to merge 1 commit into
angular:mainfrom
mohanrajvenkatesan23-04:fix/issue-36876-content-children-static-typing
Open

fix(core): accept static option in ContentChildren and ViewChildren typings#68803
mohanrajvenkatesan23-04 wants to merge 1 commit into
angular:mainfrom
mohanrajvenkatesan23-04:fix/issue-36876-content-children-static-typing

Conversation

@mohanrajvenkatesan23-04
Copy link
Copy Markdown

PR Checklist

Please check if your PR fulfills the following requirements:

PR Type

What kind of change does this PR introduce?

  • Bugfix
  • Feature
  • Code style update (formatting, local variables)
  • Refactoring (no functional changes, no api changes)
  • Build related changes
  • CI related changes
  • Documentation content changes
  • angular.dev application / infrastructure changes
  • Other... Please describe:

What is the current behavior?

@ContentChildren and @ViewChildren decorator factories accept and forward
{ static: true } to the underlying query metadata at runtime (...opts is
spread into the metadata object), but the TypeScript decorator option typings
omit static. As a result, the following compiles with ViewChild /
ContentChild but fails type-checking with ContentChildren / ViewChildren:

@ContentChildren('foo', { static: true }) foos!: QueryList<ElementRef>;
//                       ^^^^^^^^^^^^^^ rejected by TS even though it works

Issue Number: #36876

What is the new behavior?

static?: boolean is added to the option bag of ContentChildrenDecorator
and ViewChildrenDecorator (both call and new signatures), matching the
existing static?: boolean on ContentChild / ViewChild. The JSDoc on
both interfaces gains a **static** bullet using the same wording as the
existing entry on ViewChild. The public-API golden is updated in lockstep.

A regression test in packages/core/test/acceptance/query_spec.ts instantiates
a component using { static: true } on every one of the four decorators and
asserts both that it type-checks and that the query resolves correctly at
runtime.

ContentChild already had this option, so its typings are untouched.

Does this PR introduce a breaking change?

  • Yes
  • No

static was already accepted at runtime — the typing change only relaxes the
type-checker to match runtime behavior. No existing code is invalidated.

Other information

Public-API golden was updated to reflect the new optional static field.

… typings

The `@ContentChildren` and `@ViewChildren` decorator factories accept and
forward `static: boolean` to the underlying query metadata at runtime (it
is spread into the metadata via `...opts`), but the TypeScript decorator
interface typings omitted the option, so passing `{ static: true }` was
rejected by the type-checker even though it worked at runtime.

Add `static?: boolean` to the options bag of both `ContentChildrenDecorator`
and `ViewChildrenDecorator` (call and `new` signatures), mirroring the
existing `static?: boolean` on `ContentChild` / `ViewChild`. Update the
JSDoc with the same wording used by `ViewChild` and refresh the public-API
golden. `ContentChild` already had the option, so it is left unchanged.

Closes angular#36876
@pullapprove pullapprove Bot requested a review from kirjs May 19, 2026 17:20
@google-cla
Copy link
Copy Markdown

google-cla Bot commented May 19, 2026

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

@angular-robot angular-robot Bot added the area: core Issues related to the framework runtime label May 19, 2026
@ngbot ngbot Bot added this to the Backlog milestone May 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: core Issues related to the framework runtime

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant