我正在Angular 2中实现一个自定义指令,用于表单验证,在许多地方我看到在指令定义中,selector属性与多个id相关联 – 例如:
@Directive({ selector: '[my-custom-validator][ngModel]' })
多个'[…]'(括号)选择意味着什么?
解决方法
与在CSS中一样,selector [attr]匹配具有名为attr的属性的元素.当多个属性选择器链接在一起时,元素上必须存在所有属性.
注意:与CSS不同,Angular在执行匹配时会忽略target属性上的任何[…]或[(…)]绑定括号.
因此,selector [my-custom-validate] [ngModel]匹配同时具有my-custom-validate属性和ngModel属性(包括[ngModel]和[(ngModel)])的元素.例如,选择器匹配
<input type="text" name="username" my-custom-validate [(ngModel)]="model.username">
但不是
<input type="text" name="username" my-custom-validate>