The Angular Directive for Laydate, built for modern Angular applications.
Check out the component in action: https://lanxuexing.github.io/ngx-laydate/
- ๐ Modern Angular: Built with Standalone Directives, supporting Angular 16+.
- โก Optimized Loading: Smart caching ensures the core library is loaded only once per session.
- ๐งฑ Easy Integration: Seamless wrapper for the popular Laydate picker (versions >= 5.x).
- ๐งฉ Flexible Configuration: Full access to all native Laydate options and events.
- ๐จ Customizable: Determine your own theme color and path configuration.
- ๐ฆ Lightweight: Minimal overhead, focusing on wrapping the core functionality efficiently.
- ๐ SSR Friendly: Designed to work safely in Server-Side Rendering environments.
# if you use npm
npm install layui-laydate -S
npm install ngx-laydate -S
# or if you use yarn
yarn add layui-laydate
yarn add ngx-laydate๐ฅ Pro Tip: To utilize the latest Laydate features, replace "layui-laydate" with "laydate-next" and update the asset dependencies in your
angular.jsonfile.
Import NgxLaydateDirective directly in your component:
import { NgxLaydateDirective, NGX_LAYDATE_CONFIG } from 'ngx-laydate';
@Component({
standalone: true,
selector: 'app-root',
imports: [NgxLaydateDirective],
providers: [
{
provide: NGX_LAYDATE_CONFIG,
useFactory: () => ({
// Use standard import or custom path
// @ts-ignore
laydate: () => import('layui-laydate'),
path: 'assets/laydate/'
}),
},
],
template: `
<input laydate [options]="laydateOption" />
`
})
export class AppComponent {
laydateOption = {
lang: 'en',
type: 'datetime',
value: '2023-10-14 00:00:00'
};
}Import NgxLaydateModule in your module:
import { NgxLaydateModule } from 'ngx-laydate';
@NgModule({
imports: [
NgxLaydateModule.forRoot({
// @ts-ignore
laydate: () => import('layui-laydate'),
path: 'assets/laydate/'
}),
],
})
export class AppModule {}Add the laydate assets to your angular.json. This ensures themes and styles load correctly.
{
"architect": {
"build": {
"options": {
"assets": [
{
"glob": "**/*",
"input": "node_modules/layui-laydate/dist/",
"output": "assets/laydate"
}
]
}
}
}
}| Input | Type | Default | Description |
|---|---|---|---|
[options] |
LaydateOptions |
null |
Configuration object matching the official Laydate documentation. |
ngx-laydate proxies native Laydate events with a laydate prefix.
| @Output | Description |
|---|---|
(laydateInit) |
Emitted when the instance is initialized. |
(laydateReady) |
Emitted when the picker is displayed (ready callback). |
(laydateChange) |
Emitted when the value changes (done callback). |
(laydateDone) |
Same as change, consistent with native naming. |
(laydateClose) |
Emitted when the picker is closed (close callback). |
Example:
<input laydate [options]="opts" (laydateDone)="onDone($event)" />onDone([value, date, endDate]): void {
console.log('Selected:', value);
console.log('Date Object:', date);
}Clone the repo and start the demo:
npm install
npm run startVisit: http://localhost:4200