पाठ 10 / 30
@Input() और @Output()
डेटा को चाइल्ड तक भेजें और इवेंट को वापस पैरेंट तक।
डेकोरेटर शैली
@Input() पैरेंट टेम्पलेट से मान प्राप्त करता है; @Output() के साथ EventEmitter इवेंट को ऊपर भेजता है।
@Component({ selector: 'app-star-rating', standalone: true, template: `...` })
export class StarRatingComponent {
@Input() rating = 0;
@Output() ratingChange = new EventEmitter<number>();
select(value: number) {
this.ratingChange.emit(value);
}
}सिग्नल-आधारित input()/output()
नए Angular में input() और output() फ़ंक्शन मिलते हैं — सिग्नल-अनुकूल, और input.required() तय करता है कि मान हमेशा दिया जाए।
import { Component, input, output } from '@angular/core';
@Component({ selector: 'app-star-rating', standalone: true, template: `...` })
export class StarRatingComponent {
rating = input.required<number>();
ratingChange = output<number>();
select(value: number) {
this.ratingChange.emit(value);
}
}पैरेंट से उपयोग
पैरेंट input को प्रॉपर्टी की तरह बाइंड करता है और output को इवेंट की तरह सुनता है, ठीक किसी नेटिव एलिमेंट की तरह।
<app-star-rating [rating]="product.rating" (ratingChange)="onRate($event)" />त्वरित जाँच: कौन-सा फ़ंक्शन तय करता है कि पैरेंट को हमेशा मान देना ही होगा?
- input()
- input.required()
- output()
Answer
input.required() — `input.required()` कंपाइलर को यह सुनिश्चित करने पर मजबूर करता है कि पैरेंट हमेशा मान बाइंड करे।