Componente selector de fecha y hora de material angular

Oluwafisayo Oluwatayo 20 marzo 2023
  1. Selector DateTime usando dependencia de material angular
  2. Otros métodos para crear el componente selector DateTime
Componente selector de fecha y hora de material angular

El componente datepicker es uno de los componentes utilizados en situaciones en las que estamos completando nuestros formularios de información personal.

Es un componente que se utiliza en los casos en los que queremos seleccionar nuestra fecha de nacimiento en una página o en los que queremos completar el día en que comenzamos un trabajo y finalizamos el trabajo.

Encontramos varios casos en los que vemos el componente selector DateTime en las páginas web. Ahora aprendamos cómo implementarlo usando la dependencia de material angular.

Selector DateTime usando dependencia de material angular

La interfaz de usuario de material angular es la biblioteca goto para componentes listos para usar, y la implementaremos al crear el selector DateTime.

Después de crear un nuevo proyecto angular, navegue por la carpeta del proyecto e instale el material con ng add @angular/material. Ahora a la parte de codificación, navegamos a src>>app, localizamos el archivo app.component.html y escribimos estos códigos:

Fragmento de código para app.component.html:

<mat-form-field appearance="fill">
  <mat-label>Enter a date range</mat-label>
  <mat-date-range-input [rangePicker]="picker">
    <input matStartDate placeholder="Start date">
    <input matEndDate placeholder="End date">
  </mat-date-range-input>
  <mat-hint>MM/DD/YYYY  MM/DD/YYYY</mat-hint>
  <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
  <mat-date-range-picker #picker></mat-date-range-picker>
</mat-form-field>

Aquí estamos creando la estructura básica y el comportamiento del componente selector DateTime.

Debemos importar algunas dependencias del material angular al archivo app.module.ts. Hará que nuestro componente selector DateTime funcione.

Fragmento de código para app.module.ts

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import {MatDatepickerModule} from '@angular/material/datepicker';
import {MatFormFieldModule} from '@angular/material/form-field';
import {MatNativeDateModule} from '@angular/material/core';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    BrowserAnimationsModule,
    MatDatepickerModule,
    MatFormFieldModule,
    MatNativeDateModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

Lo que hemos hecho aquí es importar las dependencias necesarias en app.module.ts. Como no haríamos ningún cambio dentro del archivo app.component.ts, lo dejaremos como está.

De esta forma, obtendremos la siguiente salida:

componente selector de fecha y hora de material angular - dateone

Otros métodos para crear el componente selector DateTime

En aras de la variedad, la exploración y el aprendizaje, visitaremos otros métodos que podemos usar para diseñar un componente selector DateTime.

Componente selector DateTime con la biblioteca ng-bootstrap

Al igual que el material angular, ng-bootstrap es una biblioteca popular que proporciona widgets y dependencias para el marco angular. Es igual de fácil implementar el componente selector DateTime.

Dentro de la carpeta del proyecto de la aplicación angular recién creada que hemos creado, instalaremos ng-bootstrap escribiendo: ng add @ng-bootstrap/ng-bootstrap.

Luego comenzamos con la estructura y comportamiento del componente; nos dirigimos al archivo app.component.html para crear esto con códigos.

Fragmento de código para app.component.html:

<p>Simple datepicker</p>
<ngb-datepicker #dp [(ngModel)]="model" (navigate)="date = $event.next"></ngb-datepicker>
<hr/>
<button class="btn btn-sm btn-outline-primary me-2" (click)="selectToday()">Select Today</button>
<button class="btn btn-sm btn-outline-primary me-2" (click)="dp.navigateTo()">To current month</button>
<button class="btn btn-sm btn-outline-primary me-2" (click)="dp.navigateTo({year: 2013, month: 2})">To Feb 2013</button>
<hr/>
<pre>Month: {{ date.month }}.{{ date.year }}</pre>
<pre>Model: {{ model | json }}</pre>

Con este código, notaremos que la fecha seleccionada se muestra debajo del componente; este comportamiento se crea con las dos últimas líneas de código.

Ahora debemos centrarnos en la funcionalidad del componente selector DateTime. Para hacer eso, navegaremos al archivo app.component.ts y escribiremos estos códigos.

Fragmento de código para app.component.ts:

import {Component} from '@angular/core';
import {NgbDateStruct, NgbCalendar} from '@ng-bootstrap/ng-bootstrap';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'timetwo';
  model: NgbDateStruct;
  date: {year: number, month: number};
  constructor(private calendar: NgbCalendar) {
  }
  selectToday() {
    this.model = this.calendar.getToday();
  }
}

Lo que estamos haciendo con este código es tratar de definir el comportamiento del componente selector DateTime de tal manera que cuando seleccionamos la fecha, la función selectToday() activa el Modelo dentro de app.component.html, que imprime las fechas que hemos elegido.

La parte final trata sobre la gestión de las dependencias que instalamos desde ng-bootstrap. Dentro del archivo app.module.ts, crearemos estos códigos.

Fragmento de código para app.module.ts

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
import {FormsModule} from '@angular/forms';
@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    NgbModule,
    FormsModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

Obtendremos el siguiente resultado después de escribir todo el código para esta sección:

componente selector de fecha y hora de material angular - datetwo

Selector DateTime usando ng2 NPM

El método final en el que queremos trabajar es la biblioteca ng2, que nos proporciona un componente selector de fecha altamente configurable para el marco angular.

Dentro de nuestra nueva carpeta de proyecto, instalamos la biblioteca ng2 escribiendo: npm i ng2-date-picker. Después de la instalación, nos dirigimos al archivo app.component.html y escribimos los códigos que diseñan la estructura y el comportamiento de la página web.

Fragmento de código para app.component.html:

<dp-date-picker theme="dp-material"
[config]="datePickerConfig" required="true">
</dp-date-picker>
<br />
<input type="button" (click)="updateFormat()"  value="update date picker format" />
<br />
format : {{datePickerConfig.format}}

Ahora nos dirigimos al archivo app.component.ts para hacer algunas codificaciones más, trayendo funcionalidad a nuestro componente selector DateTime.

Fragmento de código para app.component.ts:

import { Component, OnInit, ViewChild } from '@angular/core';
import { FormControl, FormGroup, FormBuilder } from "@angular/forms";
import moment from 'moment'
import { IDayCalendarConfig, DatePickerComponent } from "ng2-date-picker";
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'timethree';
  datePickerConfig = {
    format: 'DD'
  };
  updateFormat() {
    console.log('update')
    this.datePickerConfig = {
      ...this.datePickerConfig,
      format: 'DD-MM-YYYY'
    }
  }
}

Primero, importamos algunos de los módulos ng2 al archivo app.component.ts; importaremos el resto de módulos al archivo app.module.ts.

Luego usamos la función updateFormat() para mostrar la fecha que seleccionamos en el componente selector DateTime.

Lo siguiente es trabajar en el archivo app.module.ts, donde importamos el resto de módulos que necesitamos de la biblioteca ng2.

Fragmento de código para app.module.ts:

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { ReactiveFormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
import { DpDatePickerModule } from "ng2-date-picker";
@NgModule({
  imports:      [ BrowserModule, ReactiveFormsModule, DpDatePickerModule ],
  declarations: [ AppComponent ],
  bootstrap:    [ AppComponent ]
})
export class AppModule { }

Finalmente, para que la aplicación funcione, debemos agregar esta configuración: "allowSyntheticDefaultImports": true dentro del archivo tsconfig.json de nuestra carpeta de proyecto.

Veremos el siguiente resultado después de seguir con éxito todos los pasos para la sección:

componente selector de fecha y hora de material angular - datetres

Oluwafisayo Oluwatayo avatar Oluwafisayo Oluwatayo avatar

Fisayo is a tech expert and enthusiast who loves to solve problems, seek new challenges and aim to spread the knowledge of what she has learned across the globe.

LinkedIn