在Angular 2中:在指令中设置函数未触发

时间:2017-03-16 17:13:34

标签: angular binding angular2-directives

我不明白为什么每次我应用此指令的输入元素的值发生更改时,都不会触发下面我的指令的setter中的alert()。 它只会在我刷新页面时第一次触发。

我认为,由于value属性已绑定,每次敲击输入中的键时都会触发setter。它没有。 此外,我尝试使用按钮以编程方式更改输入的值。它也不会解雇制定者。

任何人都可以如此温柔地告诉我我的错误吗?

我的app.agcomponent.ts如下:

import { Component } from '@angular/core';

@Component({
  selector: 'ag-component'
  , template:
  `
<input type="text" id="myinput" value="Mickey"  ag-directive>
<button (click)="onButtonValueClick($event)">Value</button>
`
})

export class AGComponent {    
    onButtonValueClick(event) {
        document.getElementById("myinput").value ="Pluto"; 
    }

}

我的app.agdirective.ts如下:

import { Directive } from '@angular/core';
import { ElementRef } from '@angular/core';

@Directive({
    selector: '[ag-directive]'
    , inputs: ['value: value']
})
export class AGDirective {
    set value(pValue) {
            alert(pValue);
    }    
}

1 个答案:

答案 0 :(得分:0)

您在声明中缺少@Input()。

export class AGDirective {
    @Input()
      set value(pValue) {
            alert(pValue);
      }    
}