EventEmitter ব্যবহার

Web Development - অ্যাঙ্গুলার (Angular) - কম্পোনেন্ট ইন্টারঅ্যাকশন |

EventEmitter হলো Angular এর একটি বিল্ট-ইন ক্লাস যা কম্পোনেন্টের মধ্যে ইভেন্ট সিগন্যাল পাঠাতে ব্যবহৃত হয়। এটি সাধারণত child component থেকে parent component-এ ডেটা বা ইভেন্ট পাঠানোর জন্য ব্যবহৃত হয়। EventEmitter Angular এর ডেক্লেয়ারড ইভেন্টগুলির মধ্যে একটি এবং এটি @Output ডেকোরেটরের সাথে ব্যবহৃত হয়।


EventEmitter কী?

EventEmitter একটি ক্লাস যা ইভেন্ট তৈরি করতে এবং সেই ইভেন্টের মাধ্যমে প্যারেন্ট কম্পোনেন্টে সিগন্যাল পাঠাতে সাহায্য করে। এটি মূলত Observable এর একটি বিশেষ ধরনের ক্লাস, যা Angular RxJS এর ওপর ভিত্তি করে কাজ করে। EventEmitter এর মাধ্যমে শিশু কম্পোনেন্ট (child component) প্যারেন্ট কম্পোনেন্টে ইভেন্ট পাঠাতে পারে এবং প্যারেন্ট কম্পোনেন্ট সেই ইভেন্ট গ্রহণ করতে পারে।


EventEmitter ব্যবহার করার উদাহরণ

1. Child Component (ইভেন্ট পাঠানোর জন্য)

প্রথমে, আমরা একটি child কম্পোনেন্ট তৈরি করব, যা প্যারেন্ট কম্পোনেন্টে একটি ইভেন্ট পাঠাবে।

  1. child.component.ts ফাইল:
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() মেথডটি প্যারেন্ট কম্পোনেন্টে সিগন্যাল পাঠাতে ব্যবহার করা হয়।
  1. child.component.html ফাইল:
<button (click)="sendMessage()">Send Message to Parent</button>

এখানে, click ইভেন্টে sendMessage() মেথডটি কল হচ্ছে, যা EventEmitter এর মাধ্যমে প্যারেন্ট কম্পোনেন্টে একটি মেসেজ পাঠাবে।


2. Parent Component (ইভেন্ট গ্রহণ করার জন্য)

এবার, আমরা প্যারেন্ট কম্পোনেন্টে ইভেন্টটি গ্রহণ করব এবং সেটি কিভাবে হ্যান্ডেল করতে হয় তা দেখব।

  1. parent.component.ts ফাইল:
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 কম্পোনেন্ট থেকে পাঠানো মেসেজ গ্রহণ করা হয়।
  1. parent.component.html ফাইল:
<app-child (notify)="onNotify($event)"></app-child>  <!-- ইভেন্ট শুনতে প্যারেন্ট কম্পোনেন্টে -->
<p>Message from child: {{ receivedMessage }}</p>

এখানে:

  • notify ইভেন্টটি child কম্পোনেন্ট থেকে প্যারেন্ট কম্পোনেন্টে পাঠানো হচ্ছে। onNotify($event) কল করা হচ্ছে ইভেন্ট গ্রহণ করতে এবং message গ্রহণ করে receivedMessage তে সেট করা হচ্ছে।

EventEmitter এর সাথে অন্য ব্যবহার

EventEmitter শুধুমাত্র ডেটা পাঠানোর জন্যই নয়, ইভেন্টের মাধ্যমে অ্যাকশনও ট্রিগার করতে ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, ফর্ম সাবমিশন বা ডেটা লোডিং কনফিগারেশনের ক্ষেত্রে ইভেন্ট পাঠানো এবং গ্রহণ করা সম্ভব।


EventEmitter এর মাধ্যমে Angular কম্পোনেন্টের মধ্যে ইভেন্ট পাঠানো এবং গ্রহণ করা খুবই সহজ। এটি কম্পোনেন্টের মধ্যে ডেটা যোগাযোগের একটি শক্তিশালী পদ্ধতি, যা অ্যাপ্লিকেশনের ইন্টারঅ্যাকটিভিটি এবং কম্পোনেন্টের মধ্যে যোগাযোগের সক্ষমতা বৃদ্ধি করে।

Content added By
Promotion