@Input और @Output parent और child component के बीच संवाद का मानक तरीका हैं: @Input data को भेजता है (parent → child), और events को भेजता है (child → parent)। यह सार्वभौमिक "props down, events up" pattern को दर्शाता है।
@Input और @Output parent और child component के बीच संवाद का मानक तरीका हैं: @Input data को भेजता है (parent → child), और events को भेजता है (child → parent)। यह सार्वभौमिक "props down, events up" pattern को दर्शाता है।
@Output// child: UserCardComponent
import { Component, Input } from "@angular/core";
@Component({ selector: "app-user-card", template: `<h2>{{ user.name }}</h2>` })
export class UserCardComponent {
@Input() user!: User; // receives data from the parent
@Input() showEmail = false; // with a default
}
<!-- parent passes data via property binding -->
<app-user-card [user]="currentUser" [showEmail]="true"></app-user-card>
// child emits an event the parent can listen to
import { Component, Output, EventEmitter } from "@angular/core";
@Component({
selector: "app-user-card",
template: `<button (click)="onDelete()">Delete</button>`,
})
export class UserCardComponent {
@Output() deleted = new EventEmitter<number>(); // declares an output event
onDelete() {
this.deleted.emit(this.user.id); // emit with a payload
}
}
<!-- parent listens via event binding -->
<app-user-card [user]="u" (deleted)="removeUser($event)"></app-user-card>
Child एक EventEmitter के माध्यम से emit करता है; parent उससे (eventName) के साथ bind होता है और payload को $event के रूप में प्राप्त करता है। Child कभी भी parent के data को सीधे संशोधित नहीं करता — वह emit करके action का अनुरोध करता है।
Parent ──[user]──────────────→ Child (@Input: data down)
Parent ←──(deleted)=removeUser─ Child (@Output: events up)
name = input<string>(); // signal-based @Input (newer Angular)
deleted = output<number>(); // signal-based @Output
हाल के Angular में विकल्प के रूप में signal-based input()/output() functions जोड़े गए हैं।
@Input/@Output Angular में parent-child communication और reusable components का मूल हैं — ये one-way data flow को लागू करते हैं (inputs के माध्यम से नीचे, events के माध्यम से ऊपर) जो data को predictable और components को decoupled रखता है।
इस जोड़ी को समझना किसी भी गैर-तुच्छ Angular UI को compose करने के लिए आवश्यक है; असंबंधित components के बीच संवाद के लिए, आप इसके बजाय एक shared service या state library का उपयोग करेंगे।