2017-09-27 5 views
0

Je ne sais absolument pas ce qui se passe.Passage d'un composant à la directive par l'entrée

J'essayais d'écrire une directive simple à mon composant personnalisé, basée sur la valeur (de ngModel) passant la valeur au composant ther (à ngModel aussi).

Il est ressemble à ça:

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

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

et ma directive ressemble à:

@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 
    } 
} 

Mais au lieu du composant à mon entrée se passait "dateOfBirth" string. J'espère que c'est une erreur stupide, schollboy ou une faute de frappe, mais je ne peux pas le gérer. Ou peut-être que je devrais le faire d'une autre manière. Y a-t-il une erreur de cette façon?

Répondre

1

Semble que vous avez oublié les crochets. Je suppose que ce doit être:

[birthDateExtracter]="dateOfBirth" 

ou d'une autre manière est d'utiliser l'interpolation

birthDateExtracter="{{dateOfBirth}}" 
+0

oh homme! :) encore vous sauvez ma journée :) Je savais que c'est l'erreur d'écolier! Merci beaucoup –

+0

De rien!) – yurzui