Angular2:配对选择器在@Directive中做了什么

问题描述 投票:2回答:1

我对@directive of angular 2有一些疑问,

I'm following this tutorial

1-如果选择器必须是这样的:

selector: '[validateEqual][formControlName],[validateEqual][formControl]

和validateEqual必须在这样的构造函数中

 constructor( @Attribute('validateEqual') public validateEqual: string,
    @Attribute('reverse') public reverse: string) {
}

什么是@Attribute是什么意思

如果在provider和useExisting中有multi = true

angular angular2-template angular2-directives angular2-forms
1个回答
0
投票
  • selector:这意味着该指令匹配具有validateEqual属性和formControlNameformControl之一的元素
  • @Attribute注入静态属性的值。通常使用@Input()将属性读入指令。 @Input()还支持绑定,当绑定到属性(或属性的值)更改时,输入会更新。 @Input()值在ngOnInit()ngOnChanges()中可用,而@Attribute()注入的值在构造函数中可用,但如果它们稍后更改则不会更新。 使用以下代码@Attribute('validateEqual') would setpublic validateEqualtofoo`
<div validateEqual="foo" formControlName="bar">

<!-- this doesn't work with `@Attribute('validateEqual')` 
     because the attribute value is not static -->
<div [validateEqual]="foo" formControlName="bar">
  • multi: true表示一个提供者令牌提供了一个元素数组。例如,路由器支持routerLinkrouter-outlet的所有指令都由ROUTER_DIRECTIVES提供。 如果新的提供者使用令牌ROUTER_DIRECTIVES注册,则它将覆盖先前注册的指令。如果设置了multi: true(在第一个注册的和新的提供者上),则新指令将添加到先前注册的指令而不是覆盖。 当注入ROUTER_DIRECTIVESconstructor(@Inject(ROUTER_DIRECTIVES) directives) {})时,会注入一组指令实例。注射ROUTER_DIRECTIVES通常没有意义。我用它作为一个例子,因为它是multi: true
© www.soinside.com 2019 - 2024. All rights reserved.