2017-09-27 114 views
0

我完全不知道發生了什麼。通過輸入將組件傳遞給指令

我想寫一個簡單的指令給我的自定義組件,它基於值(從ngModel)傳遞值到其組件(也是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 
    } 
} 

但不是分量輸入我路過「出生日期」字符串。我希望這是一個愚蠢的,schollboy錯誤或錯字錯誤,但我無法處理它。或者,也許我應該以另一種方式做出來。這種方式是否有錯誤?

回答

1

似乎你忘了方括號。我想這應該是:

[birthDateExtracter]="dateOfBirth" 

或另一種方式是使用插值

birthDateExtracter="{{dateOfBirth}}" 
+0

哦,夥計! :)再次拯救我的一天:)我知道那是男生的錯誤!非常感謝 –

+0

不客氣!) – yurzui