Saya mencoba menerapkan datepicker
yang tombolnya saat diklik menampilkan kalender. Untuk tujuan ini, saya telah membungkus datepicker()
(fungsi JavaScript) dalam pickDate()
(fungsi TypeScript yang ditentukan pengguna) tetapi tombolnya tidak mengklik/menampilkan apa pun. Apa yang bisa salah?
Di bawah ini adalah cuplikan kode saya
Berkas HTML
<div class="container">
<div class="row">
<div class='col-sm-6'>
<div class="form-group">
<div class='input-group date' id='datetimepicker1'>
<input type='text' class="form-control" />
<span class="input-group-addon" (click)="pickDate()">
<span class="fa fa-calendar"></span>
</span>
</div>
</div>
</div>
</div>
</div>
file .ts
import {Component} from '@angular/core';
import * as $ from 'jquery';
@Component({
selector : 'pm-datepicker', /** This is a directive which implies this Component's template can be
used as any other Component's template. */
templateUrl : './datepicker.component.html' /** Path to our HTML file */
})
export class DatePickerComponent {
pickDate() {
console.log(5); /** To check if something is logging */
$('#datetimepicker1').datepicker();
}
}
Kesalahan di konsol
ERROR TypeError: __WEBPACK_IMPORTED_MODULE_1_jquery__(...).datepicker is not a function
at DatePickerComponent.webpackJsonp.../../../../../src/app/datepicker/datepicker.component.ts.DatePickerComponent.pickDate (datepicker.component.ts:18)
at Object.eval [as handleEvent] (DatePickerComponent.html:21)
at handleEvent (core.es5.js:11998)
at callWithDebugContext (core.es5.js:13467)
at Object.debugHandleEvent [as handleEvent] (core.es5.js:13055)
at dispatchEvent (core.es5.js:8614)
at core.es5.js:9228
at HTMLSpanElement.<anonymous> (platform-browser.es5.js:2648)
at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:425)
at Object.onInvokeTask (core.es5.js:3881)
Edit 2
Saya melakukan langkah-langkah berikut:
npm install jquery-ui --save
Lalu saya menyertakan URL skrip sehubungan dengan jQuery
dan jQuery-ui
di index.html
tetapi kesalahan masih tetap ada. Apakah ada hal khusus yang perlu saya impor di component.ts
atau app.module.ts
saya?
2 jawaban
Masalah mungkin
- Jika ada perpustakaan lain yang menggunakan variabel $
- mungkin kehilangan beberapa file dari jQuery
Jika tidak ada yang berhasil, sertakan juga datepicker.js
<script src="https://cdnjs.cloudflare.com/ajax/libs/datepicker/0.5.4/datepicker.js"></script>
Sepertinya Anda perlu menyertakan $.datepicker
untuk mendapatkan fungsi tersebut. Karena sepertinya Anda menggunakan webpack, ini seharusnya sederhana npm install jquery-ui
untuk mendapatkan seluruh paket jquery-ui atau npm install jquery-datepicker
untuk hanya mendapatkan modul datepicker.
Anda juga harus menyertakan ini di sumber Anda sebelum menggunakannya (atau menambahkannya sebagai titik masuk ke webpack).
import 'jquery-ui'
di component.ts
datepicker
. Jika Anda membuka konsol setelah memuat aplikasi, apakah window.jQuery
sudah ditentukan? Apakah window.jQuery.datepicker
ditentukan?
pickDate()
untuk melihat apakah itu dipanggil$('#datetimepicker1')
tidak menemukan elemen apa pun sehingga tidak ada fungsi untuk dijalankanbut it states then datepicker() is not a valid function
Apa maksudmu? Itu melempar kesalahan dalamconsole
? Bisakah Anda menunjukkan kepada kami? Juga, sudahkah Anda memasukkan skrip jquery-ui dalam file html Anda?