Angular : 需要(或不需要)嵌套子表单

Angular : make nested subform required (or not)

一方面,我有一个非常简单的 emailForm 指令。

脚本

directives.directive('emailForm', function(){
    return {
        restrict: 'AE',

        templateUrl: "views/forms/email.html",
        controller: function(){console.log('its the addressForm here dude');},
        scope: {
            email: '=email'
        },
        require: ['^form', 'ngModel']
    };
});

我现在想在 contactForm 中使用这个指令:

<form name="contactForm">
   <input type="text" ng-model="contact.name"/>
   <email-form email="contact.email"></email-form> // how to make this required or not...?
</form>

如何在 contactForm 中创建所需的 emailForm(而不是在 mail 指令中,因为我希望能够在不需要它的地方使用它)?

我的第一个想法是在 emailDirective 中传递一个必需的参数,但是虽然这对于简单的输入(如电子邮件)来说似乎是个好主意,但一旦嵌套子表单是其上的真实表单,它似乎就不会那么快了拥有。

必需的属性仅对输入标签有效。如果您希望能够切换子表单中的所有输入字段,您可以尝试类似的操作:

<email-form email="contact.email" form-required="<your value>"></email-form>

//javascript emailFormDirective : 
scope:{
    emailRequired:"@formRequired",
    email:"=email"
} 

//email.html template
<input ... ng-required="emailRequired" ... />

注意:我为每个步骤使用了不同的名称,因此您不会在它们之间迷路。