SaeedDev94 / ng-persian-datepicker

Persian datepicker for angular 17+
MIT License
86 stars 19 forks source link

تغییر تاریخ پیکر در فرم ویرایش داده #46

Closed Salmani-AliReza closed 2 years ago

Salmani-AliReza commented 2 years ago

با سلام و خسته نباشید. من می خواهم از این پیکر در یک فرم ویرایش داده استفاده کنم و نیاز دارم تا مقداری که از Web API خواند میشه به پیکر نیز اعمال شود من از روش Reactive Forms فرم استفاده میکنم و input را به Form Control مربوط وصل می کنم . مقدار تاریخ درون input به درستی قرار می گیرد ولی زمانی که پیکر را باز می کنم تاریخ امروز را نشان می دهد اگر کسی از دوستان راه حلی برای این مشکل دارد لطفا راهنمایی کند

SaeedDev94 commented 2 years ago

Hi, That's because ng-persian-datepicker currently doesn't support FormControl or ngModel Yes! I know that's a weak point for an angular package! I should add ReactiveForm support in v4.x.x For now: You can use it as i implement it in demo component: https://github.com/Saeed-Pooyanfar/ng-persian-datepicker/tree/master/src/app/demo

Salmani-AliReza commented 2 years ago

با سلام و خسته نباشید. با تشکر از جواب و راهنمایتون. من از این روش استفاده کردم ولی به دلیل اینکه داده ها از Web API به صورت Async میاد و بعد از ساخته شدن View داده ها آماده میشه از این روش نمیشه استفاده کرد این روش فقط در صورتی که تاریخ یک مقدار ثابت باشه و نخواهیم از Web API مقادیر را دریافت کنیم به درستی عمل میکنه و در پروژه ای که من در حال کارکردن روی آن هستم یک تعداد زیادی فرم ویرایش داده داریم که در هر کدام چند Date Picker وجود دارد آیا امکان اضافه کردن این قابلیت (Reactive Forms) به سورس ng-persian-datepicker به وسیله خودم هست؟ با تشکر.

SaeedDev94 commented 2 years ago

You can wait for dateValue:

dateValue: number | undefined;

onResponse(data: any): void {
  this.dateValue = data.dateValue;
}
<ng-container *ngIf="dateValue">
  <ng-persian-datepicker [dateValue]="dateValue"></ng-persian-datepicker>
</ng-container>
SaeedDev94 commented 2 years ago

@dev-alireza please check v4.0.0 I just add support for ReactiveForm Thanks!

NoonPanir commented 2 years ago

Hello Saeed. what if we don't have any ReactiveForm?! and now [dateValue] and [input] are not available I can't set Date value manually.

NoonPanir commented 2 years ago

also I got a new error on build: ./node_modules/ng-persian-datepicker/fesm2015/ng-persian-datepicker.mjs:585:225-231 - Error: export 'filter' (imported as 'filter') was not found in 'rxjs' (possible exports: ArgumentOutOfRangeError, AsyncSubject, BehaviorSubject, ConnectableObservable, EMPTY, EmptyError, GroupedObservable, NEVER, Notification, NotificationKind, ObjectUnsubscribedError, Observable, ReplaySubject, Scheduler, Subject, Subscriber, Subscription, TimeoutError, UnsubscriptionError, VirtualAction, VirtualTimeScheduler, animationFrame, animationFrameScheduler, asap, asapScheduler, async, asyncScheduler, bindCallback, bindNodeCallback, combineLatest, concat, config, defer, empty, forkJoin, from, fromEvent, fromEventPattern, generate, identity, iif, interval, isObservable, merge, never, noop, observable, of, onErrorResumeNext, pairs, partition, pipe, queue, queueScheduler, race, range, scheduled, throwError, timer, using, zip)

looks like v4.00 is not stable enough. I'm rolling back to v2.4 for now

SaeedDev94 commented 2 years ago

@hedyehloo Hi You can set date value by using formControlName inside a formGroup This is a breaking change feature and that's why i jumped to v4.x.x ReactiveFormsModule is a standard tool in @angular/forms So try it. (It's recommend way to dealing with forms by angular team).

For installation: Probably you should upgrade rxjs to ^7.4

NoonPanir commented 2 years ago

Hi, dateInitValue not works in v4 and initial dateValue in reactive form is always a string persian date. how to get Gregorian value?! (assume that dateOnSelect never called)

SaeedDev94 commented 2 years ago

@hedyehloo You can use (dateOnInit) $event: IActiveDate