2

I am trying to get a date value. Whenever the the checkbox is unchecked and the date picker is invisible I am getting the error that : 'Cannot read property 'NTLI' of undefined'. if the check box is checked and the date picker is visible everything works fine

<md-checkbox ng-model="user.NTLI" layout="row" ng-disabled="userForm.$invalid">
  NTLI
</md-checkbox>
<div ng-show="user.NTLI">
<fieldset class="standard">
    <legend>NTLI</legend>
    <md-input-container>
        <label>Efective date</label>
        <md-datepicker ng-model="user.efectiveDateNTLI"></md-datepicker>
    </md-input-container>
</fieldset>
</div>
var efDate = '';
if ($scope.user.NTLI != undefined) 
{
    efDate = $scope.user.efectiveDateNTLI
}
3
  • In your controller, make it so user.NTLI = false;, you get this error because it doesn't exist. Commented Jan 3, 2017 at 11:34
  • Do you have anywhere in your app which is bound to user itself? Commented Jan 3, 2017 at 11:34
  • One suggestion(little off topic) : leave the habit of writing { on next line. It should be on same line. Commented Jan 3, 2017 at 11:43

4 Answers 4

3

You need to have user defined,

$scope.user ={};
if ($scope.user.NTLI != undefined) 
{
    efDate = $scope.user.efectiveDateNTLI
}
Sign up to request clarification or add additional context in comments.

Comments

1

What is initial value if your user object? You need it initialized first to be accessible from $scope.

$scope.user = {};

Comments

0

Assign user = {} on ng-init

like

<div ng-init="user = {}"> 
...
..//code
...
</div>

But other answers are also correct.

Comments

0

As user is not available it shows undefined when reading property of it. Just add following:

$scope.user = {};

in your controller.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.