I assume you want to validate email address. So in this case you don't need to create your own regular expression pattern, because the proper one is going to be quite complex. You don't want to do this.
And this is the reason, why you had this problem: even though "[email protected]" passess ngPattern validation (but it should not, this is not valid email address, and your regular expression is not standard compliant), it fails on type="email" validation (Angular one).
Angular has build-in email validation regular expression (this one here) which you can make use of simply by using input type="email". So in your case to make correct email address validation all you need to do is to remove ngPattern:
<input class="form-control input-flat-underline" id="email" name="email" ng-model="ctrl.user.email" required type="email">
[email protected]is not valid email address.