Skip to content

docs: add doc to focusBoundControl feature#67667

Open
rblmdst wants to merge 3 commits intoangular:mainfrom
rblmdst:doc-focus-bound-control
Open

docs: add doc to focusBoundControl feature#67667
rblmdst wants to merge 3 commits intoangular:mainfrom
rblmdst:doc-focus-bound-control

Conversation

@rblmdst
Copy link
Contributor

@rblmdst rblmdst commented Mar 12, 2026

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?

Issue Number: N/A

What is the new behavior?

Does this PR introduce a breaking change?

  • Yes
  • No

Other information

@google-cla
Copy link

google-cla bot commented Mar 12, 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.

@pullapprove pullapprove bot requested a review from devversion March 12, 2026 23:34
@angular-robot angular-robot bot added the area: docs Related to the documentation label Mar 12, 2026
@ngbot ngbot bot added this to the Backlog milestone Mar 12, 2026
@rblmdst rblmdst force-pushed the doc-focus-bound-control branch from 577edbf to 20f3aeb Compare March 12, 2026 23:47
@google-cla google-cla bot added cla: yes and removed cla: no labels Mar 12, 2026
@Component({/* ... */})
export class PasswordInput implements FormValueControl<string> {
readonly value = model<string>('');
readonly passwordCtrl = viewChild.required<ElementRef>('passwordCtrl');
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can specify the type in the generic ElementRef so we avoid having to do the casting later.

Suggested change
readonly passwordCtrl = viewChild.required<ElementRef>('passwordCtrl');
readonly passwordCtrl = viewChild.required<ElementRef<HTMLInputElement>>('passwordCtrl');

@JeanMeche JeanMeche requested review from bencodezen and removed request for devversion March 13, 2026 00:24

### Preventing scroll

If the target control is outside the viewport and you want to focus it without triggering a scroll, pass `{ preventScroll: true }`:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could add a link in preventScroll or in focus to clarify what preventScroll does. Normally we reference MDN for this

https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#preventscroll

@JeanMeche
Copy link
Member

The topic covered seem to be a bit small the justify a dedicated guide. Also currently this file is orphan, it's isn't referenced in adev/src/app/routing/navigation-entries/index.ts and thus cannot by navigated to (nor is it present in the navigation page).

@rblmdst rblmdst requested a review from SkyZeroZx March 13, 2026 07:25

### Custom controls

By default, calling `focusBoundControl()` on a custom control has no effect. Because a custom control can contain multiple native inputs (for example, a date picker with separate day, month, and year fields), Angular cannot determine which element should receive focus or what action to perform.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
By default, calling `focusBoundControl()` on a custom control has no effect. Because a custom control can contain multiple native inputs (for example, a date picker with separate day, month, and year fields), Angular cannot determine which element should receive focus or what action to perform.
By default, calling `focusBoundControl()` on a custom control has no effect because a custom control can contain multiple native inputs. For example, a date picker can contain separate day, month, and year fields. As a result, Angular cannot determine which element should receive focus or what action to perform.


Checking both `touched()` and validation state ensures styles only appear after the user has interacted with the field.

## Focus a form control bound to a form field
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Focus a form control bound to a form field
## Focus a form control bound to a form field

```ts
registrationForm.email().focusBoundControl({ preventScroll: true });
```

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change

}
}
```

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change


This guide covered validation and availability status handling, interaction tracking and field state propagation. Related guides explore other aspects of Signal Forms:


Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change

This guide covered validation and availability status handling, interaction tracking and field state propagation. Related guides explore other aspects of Signal Forms:



Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change

Copy link
Contributor

@bencodezen bencodezen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR @rblmdst! I made a suggestion to improve the writing flow for one paragraph.

Otherwise, if you could clean up the new line breaks (some have zero and some have two) to be consistent and address the other suggestions in the review, I think we should be go to ship this!

@rblmdst rblmdst requested a review from bencodezen March 13, 2026 15:53
@rblmdst rblmdst force-pushed the doc-focus-bound-control branch from 63c0df9 to 6f496f8 Compare March 13, 2026 15:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

adev: preview area: docs Related to the documentation cla: yes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants