Componentes Angular

Componentes de Angular

FORMULARIOS EN ANGULAR

Los formularios Angular son formularios html con un conjunto de funcionalidades añadidas por Angular.

Para crear un formulario Angular es necesario asignarle un nombre al formulario(en este caso formUsuario) a continuación de una almohadilla o hashtag(#) y a continuación, indicándole que es un tipo de formulario de tipo Angular ("ngForm"), dentro de la etiqueta form.

Ejemplo de formulario 

  1. <form #formUsuario= "ngForm">
  2. <label for = "user">Nombre</label><br>
  3. <input type="text" name="nombre">
  4. <input type="submit" value="Enviar">
  5. </form>

Capturar un evento en un formulario Angular es muy sencillo mediante la directiva (ngSubmit). Se añade la directiva y se le asigna un método desde la clase del componente ("onSubmit") donde se maneja la captura del evento submit.

  1. <form #formUsuario= "ngForm" (ngSubmit) = "onSubmit()">
  2. <label for = "user">Nombre</label><br>
  3. <input type="text" name="nombre">
  4. <input type="submit" value="Enviar">
  5. </form>


  1. import { Component, OnInit } from '@angular/core';
  2. import { User } from "usuario/user.component";
  3. @Component({
  4. selector: 'ed-usuario',
  5. templateUrl: './usuario.component.html',
  6. styleUrls: ['./usuario.component.css']
  7. })
  8. export class UsuarioComponent implements OnInit {
  9. public usuario:User;
  10. constructor() {
  11. this.usuario= new User(" "," "," "," ");
  12. }
  13. ngOnInit() {
  14. }
  15. onSubmit(form){
  16. console.log("Evento capturado");
  17. }
  18. }

De igual forma que el formulario los campos se convierten a campos de tipo Angular identificando con un nombre el campo y asignándole ngModel. También es posible aplicar a los campos la funcionalidad de Angular denominada two data-binding añadiendo la directiva [(ngModel)] y asignándole el dato que viene del componente( en el ejemplo el dato es la propiedad nombre del objeto usuario).

  1. <form #formUsuario= "ngForm" (ngSubmit) = "onSubmit()">
  2. <label for = "user">Nombre</label><br>
  3. <input type="text" name="nombre" #nombre="ngModel" [(ngModel)] = "usuario.nombre">
  4. <input type="submit" value="Enviar">
  5. </form>

VALIDACIÓN

La validación de un campo en Angular se puede obtener añadiendo una directiva ngIf a un nuevo elemento. Este elemento que se encarga de mostrar el mensaje de validación se puede coordinar mediante los atributos required y pattern (atributos nativos de html) del campo a validar.

  1. <form #formUsuario= "ngForm" (ngSubmit) = "onSubmit()">
  2. <label for = "user">Nombre</label><br>
  3. <input type="text" name="nombre" #nombre="ngModel" [(ngModel)] = "usuario.nombre" required pattern="[a-zA-Z]+">
  4. <span *ngIf = "nombre.touched && !nombre.valid">
  5. Debe escribir un nombre
  6. </span>
  7. <input type="submit" value="Enviar">
  8. </form>

Con Angular es posible añadir funcionalidades al formulario como desactivar temporalmente el botón de submit mediante la directiva [disabled] o resetear el formulario mediante la inclusión del parámetro identificativo del formulario en el método onSubmit().

En el ejemplo siguiente se puede observar como el identificador del formulario formUsuario es pasado como parámetro en el método onSubmit, esto exige añadir un parámetro en el método declarado en el componente.

  1. <form #formUsuario= "ngForm" (ngSubmit) = "onSubmit(formUsuario)">
  2. <label for = "user">Nombre</label><br>
  3. <input type="text" name="nombre" #nombre="ngModel" [(ngModel)] = "usuario.nombre" required pattern="[a-zA-Z]+">
  4. <span *ngIf = "nombre.touched && !nombre.valid">
  5. Debe escribir un nombre
  6. </span>
  7. <input type="submit" value="Enviar" [disabled] = "!formUsuario.form.valid">
  8. </form>


ViewChild()

ViewChild es un decorador de propiedades de Angular. Con este decorador es posible obtener valores o ejecutar métodos entre componentes (padre e hijo), acceso a directivas y acceso a propiedades de elementos html.

Ejemplo de acceso a elemento html

  1. import { Component, OnInit, ViewChild } from '@angular/core';
  2. @Component({
  3. selector: 'ed-page',
  4. templateUrl: './pagecomponent.html',
  5. styleUrls: ['./page.component.css']
  6. })
  7. export class PageComponent implements OnInit {
  8. @ViewChild("div_prueba") prueba_viewchild;
  9. constructor() {
  10. }
  11. ngOnInit() {
  12. var con_javascript = console.log(document.getElementById("id_con_javascript").innerHTML);
  13. console.log(this.prueba_viewchild.nativeElement.innerText);
  14. console.log(this.prueba_viewchild.nativeElement.innerHTML);
  15. }
  16. }


  1. <div>
  2. <div id="id_con_javascript" #div_prueba>
  3. <p>Texto exclusivo para prueba de ViewChild</p>
  4. </div>
  5. </div>


Comentarios: 0

Para poder comentar es necesario iniciar sesión



Este dominio utiliza cookies de terceros para crear estadísticas y publicidad personalizada. Si continúa navegando está aceptando su uso