Javascript Typescript AngularJS访问表单对象

Javascript Typescript AngularJS访问表单对象,javascript,angularjs,typescript,Javascript,Angularjs,Typescript,我正在使用AngularJS和Typescript 我在尝试访问表单对象时遇到问题 下面是我的HTML <form name="myForm" novalidate> <label>First Name</label> <input type="text" ng-model="frm.FirstName" name="FirstName" /> <button ng-click="logit()"></bu

我正在使用AngularJS和Typescript

我在尝试访问表单对象时遇到问题

下面是我的HTML

    <form name="myForm" novalidate>

    <label>First Name</label>
<input type="text" ng-model="frm.FirstName" name="FirstName"    />
<button ng-click="logit()"></button>
</form>

控制台显示frm未定义。有什么想法吗?

在AngularJS中,您可以使用
$scope
变量访问控制器内的模型。 在你的情况下是这样的

$scope.frm = {};
console.log($scope.frm.FirstName);

应该是这样的:

module TestCtrl{
    interface ITestController{
        logit(): void;
        frm: any;
    }

    class TestController implements ITestController{

        frm: any;
        constructor() {
            var vm = this;
            vm.frm = {};

        }

        logit(){
            console.log(this.frm.FirstName);
        }

    }
    angular.module('app').controller('TestCtrl', TestController);
}
你要记住的是,
var vm=this只是存储当前作用域的一种方式。typescript一开始就做得很好。所以,一般来说,你把
vm
放进去不会有什么不同

你也可以考虑把表格打印出来

interface IFormViewModel {
    firstName: string;
    lastName: string;
}
从而使您的
ITestController

interface ITestController{
    logit(): void;
    frm: IFormViewModel;
}

class TestController implements ITestController{
    frm: IFormViewModel;

    constructor() {
        this.frm = {};
    }

    logit(){
        console.log(this.frm.firstName);
    }
}
angular.module('app').controller('TestCtrl', TestController);

使用
this.frm.FirstName
。您的typescript编译器应该已经捕捉到了这个错误。感谢您输入表单的想法,实际上非常方便。关于logit函数,它的console.logs未定义,因为它似乎无法找到名字。你知道为什么吗?是的,你需要记住在指定控制器的使用位置时使用
ControllerAs
语法,否则这将不起作用。你知道我如何才能console.log myForm.FirstName到目前为止唯一的方法是这个.$scope.myForm.FirstName有什么想法吗?
interface ITestController{
    logit(): void;
    frm: IFormViewModel;
}

class TestController implements ITestController{
    frm: IFormViewModel;

    constructor() {
        this.frm = {};
    }

    logit(){
        console.log(this.frm.firstName);
    }
}
angular.module('app').controller('TestCtrl', TestController);