Angular-এ Parent-Child কম্পোনেন্ট কমিউনিকেশন হল এমন একটি কৌশল, যেখানে প্যারেন্ট কম্পোনেন্ট (parent component) এবং চাইল্ড কম্পোনেন্ট (child component) একে অপরের সাথে ডেটা শেয়ার করে এবং একে অপরের সাথে যোগাযোগ স্থাপন করে। Angular-এ এই যোগাযোগ সাধারণত @Input() এবং @Output() ডেকোরেটর ব্যবহার করে করা হয়।
@Input() ডেকোরেটর প্যারেন্ট কম্পোনেন্ট থেকে চাইল্ড কম্পোনেন্টে ডেটা পাঠানোর জন্য ব্যবহৃত হয়। এর মাধ্যমে প্যারেন্ট কম্পোনেন্ট তার ভ্যালু বা ডেটা চাইল্ড কম্পোনেন্টে ইনপুট হিসেবে প্রদান করতে পারে।
// parent.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-parent',
template: `<app-child [childData]="parentData"></app-child>`
})
export class ParentComponent {
parentData = 'Hello from Parent!';
}
// child.component.ts
import { Component, Input } from '@angular/core';
@Component({
selector: 'app-child',
template: `<p>{{ childData }}</p>`
})
export class ChildComponent {
@Input() childData: string; // প্যারেন্ট থেকে ডেটা ইনপুট হিসেবে গ্রহণ
}
এখানে, প্যারেন্ট কম্পোনেন্ট parentData
ভ্যালুকে চাইল্ড কম্পোনেন্টে childData
নামে পাঠাবে। চাইল্ড কম্পোনেন্ট এই ডেটা গ্রহণ করবে এবং তার টেমপ্লেটে প্রদর্শন করবে।
@Output() ডেকোরেটর চাইল্ড কম্পোনেন্ট থেকে প্যারেন্ট কম্পোনেন্টে ডেটা বা ইভেন্ট পাঠানোর জন্য ব্যবহৃত হয়। চাইল্ড কম্পোনেন্টে কোনো ইভেন্ট বা ফাংশন ট্রিগার হলে, সেটি প্যারেন্ট কম্পোনেন্টে পৌঁছানোর জন্য EventEmitter ব্যবহার করা হয়।
// child.component.ts
import { Component, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'app-child',
template: `<button (click)="sendMessage()">Send Message</button>`
})
export class ChildComponent {
@Output() messageEvent = new EventEmitter<string>(); // ইভেন্ট এমিটার
sendMessage() {
this.messageEvent.emit('Hello from Child!'); // প্যারেন্টে মেসেজ পাঠানো
}
}
// parent.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-parent',
template: `<app-child (messageEvent)="receiveMessage($event)"></app-child>
<p>{{ message }}</p>`
})
export class ParentComponent {
message: string = '';
receiveMessage(event: string) {
this.message = event; // চাইল্ড কম্পোনেন্ট থেকে মেসেজ গ্রহণ
}
}
এখানে, চাইল্ড কম্পোনেন্ট একটি বাটনে ক্লিক করার মাধ্যমে প্যারেন্ট কম্পোনেন্টে একটি মেসেজ পাঠাবে। প্যারেন্ট কম্পোনেন্টে receiveMessage()
ফাংশন ব্যবহার করে সেই মেসেজ গ্রহণ করা হবে।
এই প্রক্রিয়া খুবই সাধারণ এবং অধিকাংশ Angular অ্যাপ্লিকেশনে ব্যবহৃত হয়, যেখানে কম্পোনেন্টের মধ্যে ডেটা শেয়ারিং বা ইভেন্ট কমিউনিকেশন প্রয়োজন।