通过输入将组件传递给指令

时间:2017-09-27 09:40:00

标签: angular angular-ngmodel angular-directive

我完全不知道发生了什么。

我正在尝试向我的自定义组件编写一个简单的指令,该指令基于值(来自ngModel)将值传递给ther组件(也是ngModel)。

它看起来像那样:

<form-text
    required
    birthDateExtracter="dateOfBirth"
    name="id"
    [(ngModel)]="model.idNumber"></form-text>

<form-datepicker #dateOfBirth
    name="Birth Date"
    [(ngModel)]="model.birthDate"></form-datepicker>

我的指示如下:

@Directive({
  selector: '[ngModel][birthDateExtracter]'
})
export class BirthDateExtracterDirective {

  _component: any;

  @Input('birthDateExtracter')
  set birthDate(value: any) {
    this._component = value;
    console.log(value); //it's not working
  }

  constructor(private model: NgModel) {
  }

  @HostListener('ngModelChange', ['$event'])
  onModelChange(event) {
    console.log(event); //it works fine
  }
}

但是输入的组件不是传递&#34; dateOfBirth&#34; 字符串。我希望这是一个愚蠢的,错误的错误或拼写错误,但我无法处理它。或许我应该用另一种方式来做。这样有错吗?

1 个答案:

答案 0 :(得分:1)

好像你忘了方括号。我想它应该是:

[birthDateExtracter]="dateOfBirth"

或其他方式是使用插值

birthDateExtracter="{{dateOfBirth}}"