Component output properties

Muy buenas! Hoy os vengo con un mini tutorial sobre cómo usar esa directiva llamada @Output que tiene Angular.

Flujo:

@Output, nos sirve para pasarle el estado de una propiedad de un componente hijo a un componente padre mediante eventos que emiten valores a través de la función emit de EventEmitter.

Para realizar esta práctica lo primero que vas a necesitar es tener instalado Angular con una versión mayor a la 17, ya que el uso de @for no está disponible en versiones anteriores a esta y en el código lo utilizo.

Tras ello, necesitas dos componentes, al componente padre que escucha al componente hijo lo vamos a llamar TestparentcomponentComponent y al componente hijo que notificará al componente padre esperando que este reaccione lo vamos a llamar TestchildcomponentComponent.

testparentcomponent.component.ts

import { Component } from '@angular/core';
import { TestchildcomponentComponent } from '../testchildcomponent/testchildcomponent.component';

@Component({
  selector: 'app-testparentcomponent',
  imports: [TestchildcomponentComponent],
  templateUrl: './testparentcomponent.component.html',
  styleUrl: './testparentcomponent.component.scss'
})
export class TestparentcomponentComponent {
  cadena : string[] = new Array();

  addName(nombre : string) {
    this.cadena.push(nombre);
  }
}

testparentcomponent.component.html

<p>testparentcomponent works!</p>
<app-testchildcomponent (name)="addName($event)"></app-testchildcomponent>
@for(i of cadena; track i) {
{{ i }}
}

testchildcomponent.component.ts

import { Component, EventEmitter, Output} from '@angular/core';

@Component({
  selector: 'app-testchildcomponent',
  imports: [],
  templateUrl: './testchildcomponent.component.html',
  standalone: true,  styleUrl: './testchildcomponent.component.scss'
})

export class TestchildcomponentComponent {
  @Output() name = new EventEmitter<string>();

  addItem() {
    this.name.emit("Hola");
  }

}

testchildcomponent.component.html

<p>testchildcomponent works!</p>
<button (click)="addItem()">Add item</button>

Tras ello, en el navegador aparecerá un botón al que podrás hacer click y además se irá añadiendo el texto de Hola consecutivamente.

Espero que te haya resultado útil el contenido de este POST.

Saludos,

Daniel Nager Carpio.

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *