 <p>Your additional field is inside an element with</p> <pre><code>ng-if="register" </code></pre> <p>ng-if is a directive that creates its own scope. So, when something is entered into the field <code>&lt;input ng-model="email" ...&gt;</code>, an email attribute is created and populated <strong>in the ng-if scope</strong>, instead of being created in the controller scope.</p> <p>Rule of thumb: always have a dot in your ng-model, and always initialize the form model in the controller:</p> <pre><code>$scope.formModel = {}; &lt;input ng-model="formModel.email" ...&gt; </code></pre> <p>This will also make things simpler, since to post the form, all you'll have to do is something like</p> <pre><code>$http.post(url, $scope.formModel).then(...); </code></pre>