نمونههایی از نحوه استفاده از کامپوننت انتخاب تاریخ در پروژههای Angular.
برای استفاده از کامپوننت تاریخ شمسی در پروژه Angular خود، دو روش وجود دارد:
در فایل Module خود کتابخانه را Import کنید:
// app.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { NgxPersianDatepickerModule } from 'ngx-persian-datepicker-element';
import { AppComponent } from './app.component';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
NgxPersianDatepickerModule // افزودن ماژول به imports
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
در کامپوننت خود، NgxPersianDatepickerComponent را به صورت مستقیم import کنید:
// app.component.ts
import { Component } from '@angular/core';
import { NgxPersianDatepickerComponent } from 'ngx-persian-datepicker-element';
@Component({
selector: 'app-root',
standalone: true,
imports: [NgxPersianDatepickerComponent],
template: `
<ngx-persian-datepicker-element
placeholder="تاریخ را انتخاب کنید"
format="YYYY/MM/DD"
[showEvents]="true"
(dateChange)="onDateChange($event)">
</ngx-persian-datepicker-element>
`
})
export class AppComponent {
onDateChange(event: PersianDateChangeEvent) {
console.log('تاریخ شمسی:', event.jalali); // [سال, ماه, روز]
console.log('تاریخ میلادی:', event.gregorian);
console.log('آیا تعطیل است:', event.isHoliday);
console.log('رویدادها:', event.events);
}
}
حالا میتوانید از کامپوننت تاریخ شمسی در تمپلیتهای خود استفاده کنید:
<ngx-persian-datepicker-element
placeholder="تاریخ را انتخاب کنید"
format="YYYY/MM/DD"
[showEvents]="true"
(dateChange)="onDateChange($event)">
</ngx-persian-datepicker-element>
<ngx-persian-datepicker-element
[(ngModel)]="selectedDate"
placeholder="تاریخ را انتخاب کنید"
format="YYYY/MM/DD">
</ngx-persian-datepicker-element>
// app.component.ts
import { Component } from '@angular/core';
import { FormBuilder, FormGroup } from '@angular/forms';
import { NgxPersianDatepickerComponent } from 'ngx-persian-datepicker-element';
@Component({
selector: 'app-root',
standalone: true,
imports: [NgxPersianDatepickerComponent, ReactiveFormsModule],
template: `
<form [formGroup]="dateForm">
<ngx-persian-datepicker-element
formControlName="date"
placeholder="تاریخ را انتخاب کنید"
format="YYYY/MM/DD">
</ngx-persian-datepicker-element>
</form>
`
})
export class AppComponent {
dateForm: FormGroup;
constructor(private fb: FormBuilder) {
this.dateForm = this.fb.group({
date: ['']
});
}
}
// app.component.ts
import { Component, ViewChild } from '@angular/core';
import { NgxPersianDatepickerComponent } from 'ngx-persian-datepicker-element';
@Component({
selector: 'app-root',
standalone: true,
imports: [NgxPersianDatepickerComponent],
template: `
<ngx-persian-datepicker-element
#datepicker
placeholder="تاریخ را انتخاب کنید"
format="YYYY/MM/DD">
</ngx-persian-datepicker-element>
<button (click)="clearDate()">پاک کردن تاریخ</button>
`
})
export class AppComponent {
@ViewChild('datepicker') datepicker!: NgxPersianDatepickerComponent;
clearDate() {
this.datepicker.setValue('');
}
}
// app.component.html
<ngx-persian-datepicker-element
placeholder="انتخاب تاریخ"
class="custom-datepicker">
</ngx-persian-datepicker-element>
// app.component.ts
export class AppComponent {
// Add your custom styles in your component's CSS file
}
// app.component.html
<div>
<button (click)="toggleDarkMode()">
تغییر به حالت {{ isDarkMode ? 'روشن' : 'تاریک' }}
</button>
<ngx-persian-datepicker-element
placeholder="تاریخ را انتخاب کنید"
[darkMode]="isDarkMode">
</ngx-persian-datepicker-element>
</div>
// app.component.ts
export class AppComponent {
isDarkMode = false;
toggleDarkMode() {
this.isDarkMode = !this.isDarkMode;
}
}
// app.component.html
<div>
<ngx-persian-datepicker-element #datepicker
placeholder="از دکمهها استفاده کنید">
</ngx-persian-datepicker-element>
<div style="margin-top: 1rem">
<button (click)="getValue()">دریافت مقدار</button>
<button (click)="setValue()">تنظیم به ۱۵ دی ۱۴۰۲</button>
<button (click)="openCalendar()">باز کردن تقویم</button>
<button (click)="closeCalendar()">بستن تقویم</button>
</div>
</div>
// app.component.ts
import { Component, ViewChild } from '@angular/core';
import { NgxPersianDatepickerComponent } from 'ngx-persian-datepicker-element';
@Component({
selector: 'app-root',
templateUrl: './app.component.html'
})
export class AppComponent {
@ViewChild('datepicker') datepicker: NgxPersianDatepickerComponent;
getValue() {
const value = this.datepicker.getValue();
console.log('مقدار فعلی:', value);
}
setValue() {
// تنظیم تاریخ به ۱۵ دی ۱۴۰۲
this.datepicker.setValue(1402, 10, 15);
}
openCalendar() {
this.datepicker.open();
}
closeCalendar() {
this.datepicker.close();
}
}
// app.component.html
<div>
<ngx-persian-datepicker-element
eventTypes="Iran,Afghanistan,AncientIran,International"
placeholder="نمایش همه تعطیلات">
</ngx-persian-datepicker-element>
<ngx-persian-datepicker-element
eventTypes="Afghanistan"
placeholder="تعطیلات افغانستان">
</ngx-persian-datepicker-element>
<ngx-persian-datepicker-element
eventTypes="all"
placeholder="نمایش همه انواع تعطیلات">
</ngx-persian-datepicker-element>
</div>
نام | نوع | پیشفرض | توضیحات |
---|---|---|---|
value | string | '' | مقدار اولیه تاریخ |
placeholder | string | '' | متن راهنما |
format | string | 'YYYY/MM/DD' | فرمت نمایش تاریخ |
showEvents | boolean | false | نمایش رویدادها |
rtl | boolean | true | راست به چپ |
minDate | string | null | حداقل تاریخ مجاز |
maxDate | string | null | حداکثر تاریخ مجاز |
disabledDates | string[] | [] | تاریخهای غیرفعال |
نام | نوع | توضیحات |
---|---|---|
dateChange | PersianDateChangeEvent | در صورت تغییر تاریخ |
valueChange | string | در صورت تغییر مقدار |
نام | پارامترها | توضیحات |
---|---|---|
getValue | - | دریافت مقدار فعلی |
setValue | value: string | تنظیم مقدار جدید |
clear | - | پاک کردن مقدار |
نام ویژگی | نوع | توضیحات |
---|---|---|
placeholder | string | متن پیشفرض نمایشی در فیلد ورودی |
format | string | فرمت نمایش تاریخ (مثال: "YYYY/MM/DD") |
showEvents | boolean | نمایش نشانگر تعطیلات |
eventTypes | string | انواع تعطیلات برای نمایش (با کاما جدا شده: "Iran", "Afghanistan", "AncientIran", "International" یا "all" برای نمایش همه انواع) |
rtl | boolean | چیدمان راست به چپ |
value | [number, number, number] | مقدار اولیه تاریخ به صورت [سال، ماه، روز] |
disabled | boolean | غیرفعال کردن انتخابگر تاریخ |
min | [number, number, number] | حداقل تاریخ قابل انتخاب به صورت [سال، ماه، روز] |
max | [number, number, number] | حداکثر تاریخ قابل انتخاب به صورت [سال، ماه، روز] |
نام رویداد | دادهی ارسالی | توضیحات |
---|---|---|
dateChange | { jalali, gregorian, isHoliday, events } | هنگام تغییر تاریخ ارسال میشود |
calendarOpen | - | هنگام باز شدن تقویم ارسال میشود |
calendarClose | - | هنگام بسته شدن تقویم ارسال میشود |
این کتابخانه شامل تعاریف TypeScript برای تمام ویژگیها است:
import { Component } from '@angular/core';
import {
NgxPersianDatepickerComponent,
PersianDateChangeEvent,
DateTuple
} from 'ngx-persian-datepicker-element';
@Component({
selector: 'app-root',
template: `
<ngx-persian-datepicker-element (dateChange)="handleDateChange($event)"></ngx-persian-datepicker-element>
`
})
export class AppComponent {
selectedDate: DateTuple | null = null;
handleDateChange(event: PersianDateChangeEvent) {
this.selectedDate = event.jalali;
// دسترسی به مقادیر تاریخ
const [year, month, day] = event.jalali;
console.log(`سال: ${year}, ماه: ${month}, روز: ${day}`);
}
}
این کامپوننت از Web Components استفاده میکند و با تمام مرورگرهای مدرن سازگار است.
MIT