angularjs - Angular - 无法读取未定义的属性 '$invalid'

标签 angularjs typescript typeerror

我正在使用 angular 和 typescript 创建一个登录页面。单击提交按钮时,我希望 Controller 中的 login 函数触发,但如果表单无效,它就会返回。

这是我第一次使用 typescript ,所以每次我尝试放入 if 语句来检查表单是否无效时,它都会抛出错误 Cannot read property '$invalid' of undefined

这是 html:

<form class="login-form" name="loginForm" ng-submit="vm.login()" novalidate>
     <input type="email" name="email" placeholder="Email" required ng-model="vm.email" ng-class="{true: 'input-error'}[submitted && loginForm.email.$invalid]"/>
     <input type="password" name="password" placeholder="Password" required ng-model="vm.password" ng-class="{true: 'input-error'}[submitted && loginForm.password.$invalid]"/>
     <input type="submit" id="submit" ng-click="submitted=true"/>
</form>

这是编译后的 javascript:

var LoginModule;
(function (LoginModule) {
    var LoginController = (function () {
        function LoginController() {
        }
        LoginController.prototype.login = function () {
            if(this.loginForm.$invalid) {
                return;
            }
            console.log("Login was clicked, email is " + this.email + " and password is " + this.password);
        };
        return LoginController;
    })();
    LoginModule.LoginController = LoginController;
})(LoginModule || (LoginModule = {}));
angular.module('loginModule', []).controller('LoginController', LoginModule.LoginController);

看起来常见的问题是人们没有指定表单名称,但这里不是这种情况。有谁知道为什么我会收到此错误?

最佳答案

您需要表单名称中的 Controller 别名

<form  name="vm.loginForm" ng-submit="vm.login()" novalidate>

关于angularjs - Angular - 无法读取未定义的属性 '$invalid',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35166259/

相关文章:

asp.net - 让 AngularJS 与使用 Azure AD 保护的 .NET Web API 对话

javascript - 如何在 graphql 中定义不带任何参数的突变或查询?

python - 合并字典时出现类型错误 : unsupported operand type(s) for |: 'dict' and 'dict'

json - 将 json 数据更改为 Angular 2 中的 Typescript 接口(interface)对象

typescript - 如何处理 TypeScript 中 document.getElementById() 方法类型转换期间的 ESLint 错误?

python - Mat不是数字元组openCV 2

javascript - TypeError: date.getHours 不是函数?

angularjs - 带有输入的标签内的按钮不会触发 ng-click

angularjs - ngIf 和 ngSwitch AngularJS

javascript - 使用 AngularJS 获取图像时出现错误 404