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.
Deja una respuesta