Angular 4 enable HTML5 validation

I want to use HTML5 validation in Angular 4 rather than their form's based validation/reactive validation. I want to keep the validation running in the browser.

It used to work in Angular 2, but since I've upgraded, I can't get even manually created forms without any angular directives to validate using HTML5.

For instance, this won't validate in the browser at all:

<form>
<h2>Phone Number Validation</h2>
<label for="phonenum">Phone Number (format: xxxx-xxx-xxxx):</label><br />
<input id="phonenum" type="tel" pattern="^\d{4}-\d{3}-\d{4}$" required>

<input type="submit" value="Submit">

</form>

Answers


Angular4 automatically adds a novalidate attribute to forms.

To override this, you can add the ngNativeValidate directive to the form.

<form ngNativeValidate>
<h2>Phone Number Validation</h2>
<label for="phonenum">Phone Number (format: xxxx-xxx-xxxx):</label><br />
<input id="phonenum" type="tel" pattern="^\d{4}-\d{3}-\d{4}$" required>

<input type="submit" value="Submit">

</form>

Unfortunately I do not see this reflected in the docs yet, but found it by looking at the source code: https://github.com/angular/angular/blob/master/packages/forms/src/directives/ng_no_validate_directive.ts

It appears also adding ngNoForm to the form has the same effect as ngNativeValidate depending on your use-cases for needing to declare something as not a form for whatever reason.

Hope this helps.


use ngNoForm or ngNativeValidate in your form

<form ngNoForm/ngNativeValidate>
...
</form>

Need Your Help

Is there a Python module for converting RTF to plain text?

python text rtf

Ideally, I'd like a module or library that doesn't require superuser access to install; I have limited privileges in my working environment.

What does the arrow operator, '->', do in Java?

java intellij-idea apache-commons java-8 apache-commons-collection

While hunting through some code I came across the arrow operator, what exactly does it do? I thought Java did not have an arrow operator.