Skip to content

Commit cf8963c

Browse files
committed
262-datepicker-binding fix
1 parent 4e9b922 commit cf8963c

2 files changed

Lines changed: 29 additions & 21 deletions

File tree

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,30 @@
1-
import {MaterializeDirective} from "angular2-materialize";
2-
import {Component} from "@angular/core"
1+
import {Component} from '@angular/core';
2+
declare var Materialize: any;
33

44
@Component({
55
selector: "datePicker",
66
template: `
77
<form materialize class="col s12">
88
<div class="row">
99
<div class="col s6">
10-
<label for="birthdate">Birthdate</label>
11-
<input id="birthdate"
10+
<label for="birthdate">Birthdate {{birthdate}}</label>
11+
<input id="birthdate" [(ngModel)]="birthdate" name="birthdate" (ngModelChange)="modelChanged($event)"
1212
materialize="pickadate"
13-
[materializeParams]="[{selectMonths: true, selectYears: 15}]"
13+
[materializeParams]="[{format: 'dd/mm/yyyy'}]"
1414
type="text" />
1515
</div>
1616
</div>
1717
</form>
1818
`
1919
})
20-
export class DatePicker {}
20+
export class DatePicker {
21+
birthdate;
22+
23+
constructor() {
24+
this.birthdate = new Date('03/12/2017');
25+
}
26+
27+
modelChanged($event) {
28+
console.log($event);
29+
}
30+
}

src/materialize-directive.ts

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ export class MaterializeDirective implements AfterViewInit,DoCheck,OnChanges,OnD
6868
// this is here to trigger change detection for select elements
6969
@Input() public set materializeSelectOptions(options:any) { }
7070

71+
//used for the datepicker at the moment
72+
@Input() ngModel;
73+
7174
public ngAfterViewInit() {
7275
this.performElementUpdates();
7376
}
@@ -153,22 +156,17 @@ export class MaterializeDirective implements AfterViewInit,DoCheck,OnChanges,OnD
153156
jQueryElement.on("change", e => nativeElement.dispatchEvent((<any>CustomEvent("input"))));
154157
}
155158

156-
if (this.isDatePicker()) {
157-
const nativeElement = this._el.nativeElement;
158-
const jQueryElement = $(nativeElement);
159-
const enablebtns = this.enableDPButtons;
159+
if (this.isDatePicker()) {
160+
const nativeElement = this._el.nativeElement;
161+
const jqueryPickerElement = $(nativeElement);
160162

161-
jQueryElement.on("change", e => nativeElement.dispatchEvent((<any>CustomEvent("input"))));
162-
const datePicker = jQueryElement[this._functionName](...this._params);
163-
const picker = datePicker.pickadate('picker');
164-
jQueryElement.mousedown(() => {
165-
if (!jQueryElement.val()) {
166-
return;
167-
}
168-
169-
return picker.set('select', jQueryElement.val(), ...this._params)
170-
});
171-
}
163+
const datePicker = jqueryPickerElement[this._functionName](...this._params);
164+
const picker = datePicker.pickadate('picker');
165+
setTimeout(() => {
166+
picker.set('select', this.ngModel);
167+
jqueryPickerElement.on('change', e => nativeElement.dispatchEvent(new Event('input')));
168+
});
169+
}
172170

173171
if (this.isTimePicker()) {
174172
const nativeElement = this._el.nativeElement;

0 commit comments

Comments
 (0)