Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
angularjs组件在模板内获取表单_Angularjs_Angularjs Components - Fatal编程技术网

angularjs组件在模板内获取表单

angularjs组件在模板内获取表单,angularjs,angularjs-components,Angularjs,Angularjs Components,因此,我有一个包含表单的模板的组件 mycomponent.html: <div> <form name="myForm"> <!-- more html code --> </form> </div> 表单的name属性是angular用来决定绑定到什么的属性。因此,如果使用controllerAs语法,则必须在表单名称中使用该语法: <body ng-controller="MainCt

因此,我有一个包含表单的模板的组件

mycomponent.html:

<div>
    <form name="myForm"> 
        <!-- more html code -->
    </form>
</div>

表单的
name
属性是angular用来决定绑定到什么的属性。因此,如果使用controllerAs语法,则必须在表单名称中使用该语法:

  <body ng-controller="MainCtrl as vm">
    <form name='vm.myForm'>
    </form>
  </body>

这是一个可行的方法。

使用名称语法,但也使用组件后链接生命周期挂钩,一旦连接了模板和控制器,就会调用该函数。请参见

通常以角度绑定表单中的元素,而不是直接处理表单。您需要访问表单元素本身有什么原因吗?我想检查$pristine,$valid e.t.c。谢谢,这只做了一点修改,因为我使用的是组件,据我所知,无法访问“mainctrl as vm”。作为名称,然后在angular组件中可访问。是否使用angular 1.5?它会自动添加
$ctrl
作为
controllerAs
的默认值,即使是组件也是如此。是的,角度1.5,我明白了。很高兴了解未来!是的,这适用于组件,但正如royka所指出的,您可以在postLink中访问它hook@Dave组件有一个.$onInit函数,用于在组件初始化并准备好使用后运行,因此使用此示例
vm.$onInit=>(){console.log(vm.myForm);}
  <body ng-controller="MainCtrl as vm">
    <form name='vm.myForm'>
    </form>
  </body>
app.controller('MainCtrl', function($scope, $timeout) {

    var vm = this;

    console.log(vm.myForm);  // undefined

    $timeout(function() {
        console.log(vm.myForm);  // FormController object
    }, 100);
});