Skip to content

Signal forms, number input with inputMode="decimal" fails with localized decimal separator #66157

@skal111

Description

@skal111

Which @angular/* package(s) are the source of the bug?

forms

Is this a regression?

Yes

Description

Create a signal form that contains a number attribute
Displaying that attribute with an input of type="number" and inputMode="decimal" will fail on an iPhone (iOS 26.1) when it's local OS language is french

iPhone's keyboard uses a '.' decimal separator, while the french localization seems to make the input field expect a ','. Hard coding the locale to EN from within the application has no effect

This was working fine with Reactive Forms

Switching the iPhone's OS language to english makes the bug go away.

type FormModel = {
  height: number;
};

model = signal<FormModel>({ height: 5.8 });

schema = schema<FormModel>((path) => {
    min(path.height, 4.13);
    max(path.height, 7);
    required(path.height);
  });

myForm = form(this.model, this.schema);
<label>Height</label>
<input [field]="form.height" type="number" inputmode="decimal"  />

Please provide a link to a minimal reproduction of the bug

No response

Please provide the exception or error you saw


Please provide the environment you discovered this bug in (run ng version)

Angular CLI       : 21.0.3
Angular           : 21.0.6
Node.js           : 24.11.1
Package Manager   : npm 11.7.0
Operating System  : linux x64

┌───────────────────────────────────┬───────────────────┬───────────────────┐
│ Package                           │ Installed Version │ Requested Version │
├───────────────────────────────────┼───────────────────┼───────────────────┤
│ @angular/animations               │ 21.0.6            │ ^21.0.6           │
│ @angular/build                    │ 21.0.3            │ ^21.0.3           │
│ @angular/cdk                      │ 21.0.3            │ ^21.0.3           │
│ @angular/cli                      │ 21.0.3            │ ^21.0.3           │
│ @angular/common                   │ 21.0.6            │ ^21.0.6           │
│ @angular/compiler                 │ 21.0.6            │ ^21.0.6           │
│ @angular/compiler-cli             │ 21.0.6            │ ^21.0.6           │
│ @angular/core                     │ 21.0.6            │ ^21.0.6           │
│ @angular/forms                    │ 21.0.6            │ ^21.0.6           │
│ @angular/localize                 │ 21.0.6            │ ^21.0.6           │
│ @angular/platform-browser         │ 21.0.6            │ ^21.0.6           │
│ @angular/platform-browser-dynamic │ 21.0.6            │ ^21.0.6           │
│ @angular/router                   │ 21.0.6            │ ^21.0.6           │
│ rxjs                              │ 7.8.2             │ ^7.8.2            │
│ typescript                        │ 5.9.3             │ ^5.9.3            │
│ vitest                            │ 4.0.16            │ ^4.0.16           │
└───────────────────────────────────┴───────────────────┴───────────────────┘

Anything else?

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Done

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions