私はこのようにDatePickerのmaxDateを設定するAngular2指令を持っています。Angular2 update指令入力
@Directive({
selector: '[maxDate]'
})
export class MaxDateDirective {
private domElement: any;
@Input() set maxDate(max: any) {
if (max) {
$(this.domElement).data("DateTimePicker").maxDate(max);
}
}
constructor(private element: ElementRef, private renderer: Renderer) {
this.domElement = element.nativeElement;
}
}
私のコンポーネントでは、dateFromとdateToはこのようになっています。
<div class="col-md-3">
<div class="form-group">
<label class="label-control">{{'START_DATE' | translate}}</label>
<input id="owner_start_date" name="owner_start_date" type="text" class="form-control datepicker" [(ngModel)]="filters.lastWeek"
[maxDate]="filters.today" />
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label class="label-control">{{'END_DATE' | translate}}</label>
<input id="owner_end_date" name="owner_end_date" type="text" class="form-control datepicker" [(ngModel)]="filters.today"
/>
</div>
</div>
だから、私のfromDateからピッカーはtoDateまでピッカーの[(ngModel)]="filters.today"
にバインドされ、この[maxDate]="filters.today"
を、持っていますが、私の@Input() set maxDate(max: any)
は一度だけトリガされます。どのようにして、ディレクティブ内のコンポーネント内のモデルの更新を確認できますか?コンポーネントにコードを追加したくない場合、ディレクティブはAngular1の$watch
のようなロジックを担当する必要があります。
これを試しましたが、toDateピッカーで新しい値を選択するとngOnChangesがトリガーされることはありません。[maxDate] = "filters.today"のようなものです。filters.todayの変更点はありません – MarBVI
ページに{{filters.today}}を置くと、別の日付を選択したときに補間された値が変化するのがわかりますか? –
ええと...問題は、私のdatepickerが自分のngModelを更新していないことです。私がそれを修正するとすぐに、私はあなたに知らせるでしょう。ありがとう! – MarBVI