I have been looking at the
ngx-bootstrap components for Angular lately. These components are very nice and similar to the components that Bootstrap provides, for Angular. I have tested it out with Angular 8.
First off, we import the datepicker and time picker of this library like this:
ng add ngx-bootstrap --components datepicker
ng add ngx-bootstrap --components timepicker
Inside your app.module.ts, you should see the two components imported:
import { BsDatepickerModule } from "ngx-bootstrap/datepicker";
import { TimepickerModule } from 'ngx-bootstrap/timepicker';
It is also included to the imports. My sample projects app.module.ts looks like this:
import { BrowserModule } from "@angular/platform-browser";
import { FormsModule } from "@angular/forms";
import { NgModule } from "@angular/core";
import { HttpClientModule } from "@angular/common/http";
import { AppComponent } from "./app.component";
import { UserSettingsFormComponent } from "./user-settings-form/user-settings-form.component";
import { AppFocusDirective } from "./data/app-focus.directive";
import { ButtonsModule } from "ngx-bootstrap/buttons";
import { BsDatepickerModule } from "ngx-bootstrap/datepicker";
import { BsLocaleService } from 'ngx-bootstrap/datepicker';
import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
import { defineLocale } from "ngx-bootstrap/chronos";
import { nbLocale } from "ngx-bootstrap/locale";
import { TimepickerModule, TimepickerConfig } from 'ngx-bootstrap/timepicker';
import { getTimepickerConfig } from './TimepickerConfig';
defineLocale("nb", nbLocale);
@NgModule({
declarations: [AppComponent, UserSettingsFormComponent, AppFocusDirective],
imports: [
BrowserModule,
FormsModule,
HttpClientModule,
ButtonsModule.forRoot(),
BsDatepickerModule.forRoot(),
BrowserAnimationsModule,
TimepickerModule.forRoot()
],
providers: [ BsLocaleService,
{ provide: TimepickerConfig, useFactory: getTimepickerConfig }
],
bootstrap: [AppComponent]
})
export class AppModule {
constructor(private bsLocaleService: BsLocaleService) {
this.bsLocaleService.use('nb');
}
}
Observe the localization adjustments I have included here, for Norwegian localization of the date picker.
I also include a custom factory function for setting up the time picker to not show the meridian button, i.e. show a 24 hours format of the time.
import { TimepickerConfig } from "ngx-bootstrap/timepicker";
// such override allows to keep some initial values
export function getTimepickerConfig(): TimepickerConfig {
return Object.assign(new TimepickerConfig(), {
hourStep: 2,
minuteStep: 5,
showMeridian: false,
readonlyInput: false,
mousewheel: true,
showMinutes: true,
showSeconds: false
});
}
If you want to test out the adjustments I made, the Github repo is available here:
https://github.com/toreaurstadboss/Angular8FormsNgxBootstrapTesting