<p dir="auto">Brought to mind by the message from DevMode which tells you that you can use ProdMode but doesn't tell you why or how.  Nor do I think it should. I think it should have a link.</p>
<p dir="auto">A1 has links which is great! Also helped with size of the production version I'm sure. Let's do that in A2 too!</p>
<p dir="auto"><strong>I'm submitting a ...</strong>  (check one with "x")</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="[x] bug report
[x] feature request
[ ] support request"><pre class="notranslate"><code class="notranslate">[x] bug report
[x] feature request
[ ] support request
</code></pre></div>
<p dir="auto"><strong>Current behavior</strong></p>

<p dir="auto">Suppose we have such an input:<br>
<code class="notranslate">&lt;input #nativeControl #ngControl="ngModel" type="number" min="30"&gt;</code></p>
<p dir="auto">Now if we enter 25 in that box, the <code class="notranslate">ngControl.valid</code> property will be <code class="notranslate">true</code>, while <code class="notranslate">nativeControl.validity.valid</code> will be <code class="notranslate">false</code> and <code class="notranslate">nativeControl.validity.rangeUnderflow</code> will be <code class="notranslate">true</code>.</p>
<p dir="auto">Moreover, if we enter invalid characters (e.g. only dashes) in such a field, <code class="notranslate">ngControl.valid</code> property will be <code class="notranslate">true</code>. At the same time, <code class="notranslate">nativeControl.validity.valid</code> will be false and <code class="notranslate">nativeControl.validity.badInput</code> will be true;</p>
<p dir="auto">Another example: <code class="notranslate">&lt;input type="email"&gt;</code> is not validated by Angular (i.e. is always valid), while HTML5 validation correctly sets <code class="notranslate">ValidityState.typeMismatch</code> to <code class="notranslate">true</code> (and <code class="notranslate">ValidityState.valid</code> to <code class="notranslate">false</code>) if invalid email address is entered.</p>
<p dir="auto">Currently I'm testing this with chrome but I don't think there will be any differences with other browsers. They all implement HTML5 validation pretty much without any issues.</p>
<p dir="auto"><strong>Expected behavior</strong></p>
<p dir="auto">I think HTML5 standard already implements validation mechanism pretty well. Please view <a href="url">https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5/Constraint_validation</a> and <a href="url">https://developer.mozilla.org/en-US/docs/Web/API/ValidityState</a> for example. I think Angular should either emulate, or even directly depend on that mechanism (ValidityState values defined by HTML5).</p>
<p dir="auto">Yes I know one can implement custom validator in angular and basically emulate anything, but... I think I'd rather have <code class="notranslate">&lt;input type="email"&gt;</code> validation out of the box, rather than to reinvent the wheel and write new validator just for email checking.</p>
<p dir="auto"><strong>[EDIT] Minimal reproduction of the problem with instructions</strong><br>
Please view an example: <a href="http://plnkr.co/edit/5pzh5pV2ExF3vKGhgEtq?p=info" rel="nofollow">http://plnkr.co/edit/5pzh5pV2ExF3vKGhgEtq?p=info</a></p>
<p dir="auto">Just enter number in first input, or email in second input, and you will see that Angular's validator does not respect <code class="notranslate">min</code> attribute (of <code class="notranslate">&lt;input type="number"&gt;</code>) and also <code class="notranslate">&lt;input type="email"&gt;</code> inputs.</p>
<ul dir="auto">
<li><strong>Angular version:</strong> 4.0.X</li>
</ul>

<ul dir="auto">
<li><strong>Browser:</strong> [all]</li>
</ul>

<ul dir="auto">
<li><strong>Language:</strong> [TypeScript 2.X]</li>
</ul>