EventEmitter হলো Angular এর একটি বিল্ট-ইন ক্লাস যা কম্পোনেন্টের মধ্যে ইভেন্ট সিগন্যাল পাঠাতে ব্যবহৃত হয়। এটি সাধারণত child component থেকে parent component-এ ডেটা বা ইভেন্ট পাঠানোর জন্য ব্যবহৃত হয়। EventEmitter Angular এর ডেক্লেয়ারড ইভেন্টগুলির মধ্যে একটি এবং এটি @Output
ডেকোরেটরের সাথে ব্যবহৃত হয়।
EventEmitter একটি ক্লাস যা ইভেন্ট তৈরি করতে এবং সেই ইভেন্টের মাধ্যমে প্যারেন্ট কম্পোনেন্টে সিগন্যাল পাঠাতে সাহায্য করে। এটি মূলত Observable
এর একটি বিশেষ ধরনের ক্লাস, যা Angular RxJS এর ওপর ভিত্তি করে কাজ করে। EventEmitter এর মাধ্যমে শিশু কম্পোনেন্ট (child component) প্যারেন্ট কম্পোনেন্টে ইভেন্ট পাঠাতে পারে এবং প্যারেন্ট কম্পোনেন্ট সেই ইভেন্ট গ্রহণ করতে পারে।
প্রথমে, আমরা একটি child কম্পোনেন্ট তৈরি করব, যা প্যারেন্ট কম্পোনেন্টে একটি ইভেন্ট পাঠাবে।
import { Component, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'app-child',
templateUrl: './child.component.html',
styleUrls: ['./child.component.css']
})
export class ChildComponent {
@Output() notify = new EventEmitter<string>(); // EventEmitter তৈরি
sendMessage() {
this.notify.emit('Hello from child component!'); // ইভেন্ট পাঠানো
}
}
এখানে:
@Output()
ডেকোরেটর ব্যবহার করা হয়েছে EventEmitter
কে প্যারেন্ট কম্পোনেন্টে ইভেন্ট পাঠানোর জন্য।notify.emit()
মেথডটি প্যারেন্ট কম্পোনেন্টে সিগন্যাল পাঠাতে ব্যবহার করা হয়।<button (click)="sendMessage()">Send Message to Parent</button>
এখানে, click
ইভেন্টে sendMessage()
মেথডটি কল হচ্ছে, যা EventEmitter
এর মাধ্যমে প্যারেন্ট কম্পোনেন্টে একটি মেসেজ পাঠাবে।
এবার, আমরা প্যারেন্ট কম্পোনেন্টে ইভেন্টটি গ্রহণ করব এবং সেটি কিভাবে হ্যান্ডেল করতে হয় তা দেখব।
import { Component } from '@angular/core';
@Component({
selector: 'app-parent',
templateUrl: './parent.component.html',
styleUrls: ['./parent.component.css']
})
export class ParentComponent {
receivedMessage: string;
onNotify(message: string) {
this.receivedMessage = message; // প্যারেন্ট কম্পোনেন্টে ইভেন্ট গ্রহণ
}
}
এখানে:
onNotify()
মেথডটি প্যারেন্ট কম্পোনেন্টে ইভেন্ট গ্রহণ করার জন্য ব্যবহার করা হয়।message: string
আর্গুমেন্টের মাধ্যমে child কম্পোনেন্ট থেকে পাঠানো মেসেজ গ্রহণ করা হয়।<app-child (notify)="onNotify($event)"></app-child> <!-- ইভেন্ট শুনতে প্যারেন্ট কম্পোনেন্টে -->
<p>Message from child: {{ receivedMessage }}</p>
এখানে:
notify
ইভেন্টটি child কম্পোনেন্ট থেকে প্যারেন্ট কম্পোনেন্টে পাঠানো হচ্ছে। onNotify($event)
কল করা হচ্ছে ইভেন্ট গ্রহণ করতে এবং message
গ্রহণ করে receivedMessage
তে সেট করা হচ্ছে।EventEmitter শুধুমাত্র ডেটা পাঠানোর জন্যই নয়, ইভেন্টের মাধ্যমে অ্যাকশনও ট্রিগার করতে ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, ফর্ম সাবমিশন বা ডেটা লোডিং কনফিগারেশনের ক্ষেত্রে ইভেন্ট পাঠানো এবং গ্রহণ করা সম্ভব।
EventEmitter
এর মাধ্যমে Angular কম্পোনেন্টের মধ্যে ইভেন্ট পাঠানো এবং গ্রহণ করা খুবই সহজ। এটি কম্পোনেন্টের মধ্যে ডেটা যোগাযোগের একটি শক্তিশালী পদ্ধতি, যা অ্যাপ্লিকেশনের ইন্টারঅ্যাকটিভিটি এবং কম্পোনেন্টের মধ্যে যোগাযোগের সক্ষমতা বৃদ্ধি করে।
Read more