反应式表单未获取日期和时间值
Reactive forms not getting date and time values
我正在制作一个表格来上传内容,但是当我 console.log 表格时,我没有得到我输入的日期和时间的值,它们是空的,但已经有一个我设置的值TS,有什么帮助吗?也许我做错了。
这是我的表格,日期和时间的输入在最后
<form [formGroup]="noticiaForm" (ngSubmit)="noticiaForm.valid && onSubmit()" class="needs-validation row g-2" novalidate #formNoticia="ngForm">
<div class="mb-2">
<label for="titulo" class="col-lg-10 col-form-label fw-bold">Titulo del Articulo</label>
<div class="col-lg-6">
<input formControlName="titulo" type="text" class="form-control" name="titulo" id="titulo" placeholder="Titulo del articulo" autocomplete="off" required ngClass="{{noticiaForm.get('titulo')?.invalid && noticiaForm.get('titulo')?.touched || formNoticia.submitted ? 'is-invalid' : ''}}">
<div class="invalid-feedback" *ngIf="noticiaForm.get('titulo')?.invalid">Ingresa el titulo del articulo</div>
</div>
</div>
<div class="mb-2">
<label for="autor" class="col-lg-10 col-form-label fw-bold">Autor</label>
<div class="col-lg-6">
<input formControlName="autor" type="text" class="form-control" name="autor" id="autor" placeholder="Autor del articulo" autocomplete="off">
</div>
</div>
<div class="mb-3">
<label for="formFile" class="form-label col-lg-3 fw-bold">Imagen principal</label>
<div class="col-lg-6">
<input formControlName="imagenPrincipal" class="form-control" type="file" id="formFile">
</div>
</div>
<div class="mb-5">
<label for="contenidoArticulo" class="form-label col-lg-3 fw-bold">Contenido del articulo</label>
<div class="col-lg-12 richText" ngClass="{{noticiaForm.get('contenidoArticulo')?.invalid && noticiaForm.get('contenidoArticulo')?.touched || formNoticia.submitted ? 'invalidRichtext' : ''}}">
<quill-editor formControlName="contenidoArticulo" [required]="true" ngClass="{{noticiaForm.get('contenidoArticulo')?.invalid && noticiaForm.get('contenidoArticulo')?.touched || formNoticia.submitted ? 'is-invalid' : ''}}"></quill-editor>
<div class="invalid-feedback" *ngIf="noticiaForm.get('contenidoArticulo')?.invalid">Ingresa el contenido del articulo</div>
</div>
</div>
<div class="mb-3 mt-5">
<label for="descripcion" class="form-label fw-bold">Descripcion del articulo</label>
<div class="col-lg-12">
<textarea class="form-control" id="descripcion" formControlName="descripcion" rows="5" placeholder="Primer parrafo o parrafos del articulo" required ngClass="{{noticiaForm.get('descripcion')?.invalid && noticiaForm.get('descripcion')?.touched || formNoticia.submitted ? 'is-invalid' : ''}}"></textarea>
<div class="invalid-feedback" *ngIf="noticiaForm.get('descripcion')?.invalid">Ingresa la descripcion del articulo</div>
</div>
</div>
<div class="row g-2">
<div class="mb-3 col-lg-4">
<label for="categorias" class="form-label fw-bold">Categorias</label>
<mat-form-field class="col-lg-12" appearance="fill" >
<mat-label>Categorias</mat-label>
<mat-select formControlName="categorias" multiple required>
<mat-option *ngFor="let categoria of categoriasNoticias" [value]="categoria">{{categoria}}</mat-option>
</mat-select>
</mat-form-field>
</div>
<!--Inputs of date and time-->
<div class="mb-3 col-lg-3 ms-lg-5">
<label for="fecha" class="form-label fw-bold">Fecha</label>
<div class="col-lg-8">
<input type="date" id="fecha" class="form-control mt-lg-1" formControlName="fecha" readonly>
</div>
</div>
<div class="mb-3 col-lg-4">
<label for="hora" class="form-label fw-bold disabled">Hora</label>
<div class="col-lg-5">
<input type="time" id="hora" class="form-control mt-lg-1" formControlName="hora" readonly>
</div>
</div>
<!--Inputs of date and time-->
</div>
<div class="mb-3">
<button type="submit" class="btn btn-primary" >Guardar</button>
</div>
</form>
这是我的 TS 文件
import { Component, OnInit } from '@angular/core';
import { FormControl, FormGroup, Validators } from '@angular/forms';
import { DatePipe } from '@angular/common';
declare var $: any;
@Component({
selector: 'app-agregar-noticia',
templateUrl: './agregar-noticia.component.html',
styleUrls: ['./agregar-noticia.component.css']
})
export class AgregarNoticiaComponent implements OnInit {
categoriasNoticias: string[] = ['Extra cheese', 'Mushroom', 'Onion', 'Pepperoni', 'Sausage', 'Tomato', 'Otro', 'Ejemplo', 'Largo', 'Chico', 'Mediano'];
noticiaForm = new FormGroup({
titulo: new FormControl('', Validators.required),
autor: new FormControl(''),
imagenPrincipal: new FormControl(''),
contenidoArticulo: new FormControl('', Validators.required),
descripcion: new FormControl('', Validators.required),
categorias: new FormControl('', Validators.required),
fecha: new FormControl(''),
hora: new FormControl('')
});
fechaActual = new Date().toLocaleDateString();
horaActual = new Date().toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'})
constructor(private datePipe: DatePipe) {
console.log(this.datePipe.transform(this.fechaActual, 'yyyy-MM-dd'), this.horaActual)
$(() =>{
var fecha = $('#fecha');
$(fecha).val(this.datePipe.transform(this.fechaActual, 'yyyy-MM-dd'));
$('#hora').val(this.horaActual)
})
}
ngOnInit(): void { }
onSubmit(){
console.log(this.noticiaForm.value)
}
}
所以我在这里将输入的值设置为用户打开表单的实际时间,这是它的外观和我得到的数组,你可以看到“fecha”和“hora”在数组中是空的,但在表格中已经有一个值
哇,我感觉很糟糕,我没有得到值,因为我没有在 FormGroup 中指定“fecha”和“hora”是 Date() 类型
fecha: new FormControl(new Date().toLocaleDateString()),
hora: new FormControl(new Date().toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'}))
我只需要指定它,现在我正在获取值。
我正在制作一个表格来上传内容,但是当我 console.log 表格时,我没有得到我输入的日期和时间的值,它们是空的,但已经有一个我设置的值TS,有什么帮助吗?也许我做错了。
这是我的表格,日期和时间的输入在最后
<form [formGroup]="noticiaForm" (ngSubmit)="noticiaForm.valid && onSubmit()" class="needs-validation row g-2" novalidate #formNoticia="ngForm">
<div class="mb-2">
<label for="titulo" class="col-lg-10 col-form-label fw-bold">Titulo del Articulo</label>
<div class="col-lg-6">
<input formControlName="titulo" type="text" class="form-control" name="titulo" id="titulo" placeholder="Titulo del articulo" autocomplete="off" required ngClass="{{noticiaForm.get('titulo')?.invalid && noticiaForm.get('titulo')?.touched || formNoticia.submitted ? 'is-invalid' : ''}}">
<div class="invalid-feedback" *ngIf="noticiaForm.get('titulo')?.invalid">Ingresa el titulo del articulo</div>
</div>
</div>
<div class="mb-2">
<label for="autor" class="col-lg-10 col-form-label fw-bold">Autor</label>
<div class="col-lg-6">
<input formControlName="autor" type="text" class="form-control" name="autor" id="autor" placeholder="Autor del articulo" autocomplete="off">
</div>
</div>
<div class="mb-3">
<label for="formFile" class="form-label col-lg-3 fw-bold">Imagen principal</label>
<div class="col-lg-6">
<input formControlName="imagenPrincipal" class="form-control" type="file" id="formFile">
</div>
</div>
<div class="mb-5">
<label for="contenidoArticulo" class="form-label col-lg-3 fw-bold">Contenido del articulo</label>
<div class="col-lg-12 richText" ngClass="{{noticiaForm.get('contenidoArticulo')?.invalid && noticiaForm.get('contenidoArticulo')?.touched || formNoticia.submitted ? 'invalidRichtext' : ''}}">
<quill-editor formControlName="contenidoArticulo" [required]="true" ngClass="{{noticiaForm.get('contenidoArticulo')?.invalid && noticiaForm.get('contenidoArticulo')?.touched || formNoticia.submitted ? 'is-invalid' : ''}}"></quill-editor>
<div class="invalid-feedback" *ngIf="noticiaForm.get('contenidoArticulo')?.invalid">Ingresa el contenido del articulo</div>
</div>
</div>
<div class="mb-3 mt-5">
<label for="descripcion" class="form-label fw-bold">Descripcion del articulo</label>
<div class="col-lg-12">
<textarea class="form-control" id="descripcion" formControlName="descripcion" rows="5" placeholder="Primer parrafo o parrafos del articulo" required ngClass="{{noticiaForm.get('descripcion')?.invalid && noticiaForm.get('descripcion')?.touched || formNoticia.submitted ? 'is-invalid' : ''}}"></textarea>
<div class="invalid-feedback" *ngIf="noticiaForm.get('descripcion')?.invalid">Ingresa la descripcion del articulo</div>
</div>
</div>
<div class="row g-2">
<div class="mb-3 col-lg-4">
<label for="categorias" class="form-label fw-bold">Categorias</label>
<mat-form-field class="col-lg-12" appearance="fill" >
<mat-label>Categorias</mat-label>
<mat-select formControlName="categorias" multiple required>
<mat-option *ngFor="let categoria of categoriasNoticias" [value]="categoria">{{categoria}}</mat-option>
</mat-select>
</mat-form-field>
</div>
<!--Inputs of date and time-->
<div class="mb-3 col-lg-3 ms-lg-5">
<label for="fecha" class="form-label fw-bold">Fecha</label>
<div class="col-lg-8">
<input type="date" id="fecha" class="form-control mt-lg-1" formControlName="fecha" readonly>
</div>
</div>
<div class="mb-3 col-lg-4">
<label for="hora" class="form-label fw-bold disabled">Hora</label>
<div class="col-lg-5">
<input type="time" id="hora" class="form-control mt-lg-1" formControlName="hora" readonly>
</div>
</div>
<!--Inputs of date and time-->
</div>
<div class="mb-3">
<button type="submit" class="btn btn-primary" >Guardar</button>
</div>
</form>
这是我的 TS 文件
import { Component, OnInit } from '@angular/core';
import { FormControl, FormGroup, Validators } from '@angular/forms';
import { DatePipe } from '@angular/common';
declare var $: any;
@Component({
selector: 'app-agregar-noticia',
templateUrl: './agregar-noticia.component.html',
styleUrls: ['./agregar-noticia.component.css']
})
export class AgregarNoticiaComponent implements OnInit {
categoriasNoticias: string[] = ['Extra cheese', 'Mushroom', 'Onion', 'Pepperoni', 'Sausage', 'Tomato', 'Otro', 'Ejemplo', 'Largo', 'Chico', 'Mediano'];
noticiaForm = new FormGroup({
titulo: new FormControl('', Validators.required),
autor: new FormControl(''),
imagenPrincipal: new FormControl(''),
contenidoArticulo: new FormControl('', Validators.required),
descripcion: new FormControl('', Validators.required),
categorias: new FormControl('', Validators.required),
fecha: new FormControl(''),
hora: new FormControl('')
});
fechaActual = new Date().toLocaleDateString();
horaActual = new Date().toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'})
constructor(private datePipe: DatePipe) {
console.log(this.datePipe.transform(this.fechaActual, 'yyyy-MM-dd'), this.horaActual)
$(() =>{
var fecha = $('#fecha');
$(fecha).val(this.datePipe.transform(this.fechaActual, 'yyyy-MM-dd'));
$('#hora').val(this.horaActual)
})
}
ngOnInit(): void { }
onSubmit(){
console.log(this.noticiaForm.value)
}
}
所以我在这里将输入的值设置为用户打开表单的实际时间,这是它的外观和我得到的数组,你可以看到“fecha”和“hora”在数组中是空的,但在表格中已经有一个值
哇,我感觉很糟糕,我没有得到值,因为我没有在 FormGroup 中指定“fecha”和“hora”是 Date() 类型
fecha: new FormControl(new Date().toLocaleDateString()),
hora: new FormControl(new Date().toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'}))
我只需要指定它,现在我正在获取值。