- 追加された行はこの色です。
- 削除された行はこの色です。
- Angular2/jQuery UIのdatepickerを使う へ行く。
- Angular2/jQuery UIのdatepickerを使う の差分を削除
* キーワード [#zdd5284f]
- Angular2
- jQuery UI
- datepicker
* したいこと [#sad4a558]
Angular2で作るページにjQuery UIのdatepickerを置きたい。
* どうやって [#z7a636d5]
** 用意するもの [#pc788845]
- index.html
- datepicker用のDirective
- 使う側のテンプレート
** index.html [#f365dc90]
<script src="assets/bracket/js/jquery.min.js"></script>
<script src="assets/bracket/js/jquery-ui.min.js"></script>
あとたぶん、.cssも要るような気がする。
** datepicker用のDirective [#j32971ea]
import {
Directive, OnInit, Output,
EventEmitter, ElementRef
} from '@angular/core';
declare var $: any;
@Directive({
selector: '[datepicker]'
})
export class DatepickerDirective {
@Output()
change: EventEmitter<string> = new EventEmitter();
change: EventEmitter<string> = new EventEmitter<string>();
constructor(
private el: ElementRef
) { }
ngOnInit() {
$(this.el.nativeElement).datepicker({
closeText: "閉じる",
currentText: "今日",
monthNames: [ "1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月" ],
monthNamesShort: [ "1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月" ],
dayNamesShort: [ "日","月","火","水","木","金","土" ],
dayNamesMin: [ "日","月","火","水","木","金","土" ],
weekHeader: "週",
dateFormat: "yy/mm/dd",
firstDay: 0, // Sunday will be first of weeks
isRTL: false,
showMonthAfterYear: true,
yearSuffix: "年",
showButtonPanel: true,
onSelect: (dateText) => {
this.change.emit(dateText);
}
});
}
}
大事なところは次。
*** 外部ライブラリを使う [#f3d83ecf]
declare var $: any;
jQueryでもいい。
*** コンストラクタで要素を取得する [#a9825d58]
constructor(
private el: ElementRef
) { }
Directiveをつけた要素を取得できる。
*** $(element).datepicker()を呼ぶ [#d3124e2e]
ngOnInit() {
$(this.el.nativeElement).datepicker({
生エレメントをjQueryに食わせて.datepicker()する。~
index.htmlに書くだけだと、要素の後出しでdatepicker()が効いてないことになる。
** 使う側のテンプレート [#ub4353a1]
<input datepicker type="text" placeholder="yyyy/MM/dd">
inputにDirective(「datepicker」)をくっつける。
* ノート [#ta9a79aa]
datepickerに限らず、この方法でjQueryのいろいろができる。
* 参考 [#v5eca831]
- [[jQuery in Angular2 not working - Stack Overflow>http://stackoverflow.com/questions/36869659/jquery-in-angular2-not-working]]