Angular-এ পাইপস (Pipes) হলো এমন একটি ফিচার যা ডেটাকে একটি নির্দিষ্ট ফরম্যাটে রূপান্তরিত করার জন্য ব্যবহৃত হয়। সাধারণত, তারা টেম্পলেটের মধ্যে ডেটাকে প্রদর্শন করার সময় কাজ করে এবং ডেটাকে ফরম্যাটিং, ফিল্টারিং বা ট্রান্সফর্মিং করার জন্য ব্যবহৃত হয়।
পাইপস ব্যবহার করার মাধ্যমে আপনি ডেটার অবস্থান পরিবর্তন না করে শুধুমাত্র তা কিভাবে প্রদর্শিত হবে তা নিয়ন্ত্রণ করতে পারেন। উদাহরণস্বরূপ, ডেটাকে তারিখ হিসেবে, মুদ্রা হিসেবে বা বড় অক্ষরে প্রদর্শন করা।
Angular-এ বিভিন্ন বিল্ট-ইন পাইপস রয়েছে, যেগুলি খুবই উপকারী। এগুলোর মধ্যে কিছু সাধারণ পাইপস হল: DatePipe, CurrencyPipe, UpperCasePipe, LowerCasePipe, DecimalPipe, JsonPipe, PercentPipe, ইত্যাদি।
DatePipe ব্যবহার করে আপনি তারিখ এবং সময়কে নির্দিষ্ট ফরম্যাটে রূপান্তরিত করতে পারেন।
<p>{{ today | date:'short' }}</p>
এখানে today
যদি Date
টাইপের কোনো ভ্যারিয়েবল হয়, তবে এটি date:'short'
ফরম্যাটে প্রদর্শিত হবে।
<p>{{ today | date:'fullDate' }}</p> <!-- 3 October 2024 -->
এখানে, fullDate
ফরম্যাট তারিখের পূর্ণ আঙ্গিক দেখাবে।
CurrencyPipe মুদ্রা রূপান্তর করতে ব্যবহৃত হয়। এটি সাধারণত টাকার পরিমাণ বা মুদ্রা ফরম্যাটে ডেটাকে প্রদর্শন করতে ব্যবহৃত হয়।
<p>{{ amount | currency:'USD' }}</p>
এখানে amount
হলো এমন একটি ভ্যারিয়েবল যা একটি সঠিক মান ধারণ করে, এবং currency:'USD'
ফরম্যাটে এটি ডলারে রূপান্তরিত হবে।
<p>{{ amount | currency:'INR':'symbol' }}</p> <!-- ₹5000.00 -->
এখানে, 'symbol'
দ্বারা রূপান্তরিত পরিমাণে মুদ্রার সিম্বল প্রদর্শিত হবে।
UpperCasePipe এবং LowerCasePipe ব্যবহার করে আপনি একটি স্ট্রিংকে বড় অক্ষর বা ছোট অক্ষরে রূপান্তর করতে পারেন।
<p>{{ text | uppercase }}</p> <!-- EXAMPLE TEXT -->
<p>{{ text | lowercase }}</p> <!-- example text -->
এখানে text
ভ্যারিয়েবলটি একটি স্ট্রিং, এবং uppercase
বা lowercase
দ্বারা তা রূপান্তরিত হবে।
JsonPipe ব্যবহার করে আপনি যেকোনো অবজেক্টকে JSON ফরম্যাটে রূপান্তর করতে পারেন, যা ডেভেলপারদের জন্য ডেটার সহজ প্রদর্শন করতে সাহায্য করে।
<p>{{ data | json }}</p>
এখানে, data
কোনো অবজেক্ট বা অ্যারে হতে পারে এবং json
পাইপের মাধ্যমে এটি JSON ফরম্যাটে রূপান্তরিত হবে।
<p>{{ user | json }}</p>
এখানে, user
একটি অবজেক্ট হলে এটি JSON আউটপুট হিসেবে প্রদর্শিত হবে।
DecimalPipe ব্যবহার করে আপনি দশমিক সংখ্যা ফরম্যাট করতে পারেন, এবং নির্দিষ্ট সংখ্যক দশমিক স্থানও নির্ধারণ করতে পারেন।
<p>{{ value | number:'1.2-2' }}</p>
এখানে, '1.2-2'
মানে হলো, অন্তত একটি ডিজিট এবং সর্বোচ্চ দুইটি দশমিক স্থান পর্যন্ত সংখ্যা প্রদর্শিত হবে।
PercentPipe ব্যবহার করে আপনি সংখ্যাকে শতাংশ হিসেবে রূপান্তর করতে পারেন। এটি দশমিক সংখ্যাকে শতাংশের আকারে দেখায়।
<p>{{ value | percent:'1.0-0' }}</p>
এখানে, value
একটি সংখ্যা হতে হবে এবং এটি শতকরা রূপে রূপান্তরিত হবে।
<p>{{ 0.15 | percent }}</p> <!-- 15% -->
এখানে, 0.15
শতাংশ রূপে 15%
হিসেবে রূপান্তরিত হবে।
AsyncPipe পাইপটি এসিনক্রোনাস ডেটা, যেমন Observable
বা Promise
থেকে ডেটা সাবস্ক্রাইব করতে ব্যবহৃত হয় এবং রিয়েক্টিভ ডেটার পরিবর্তনগুলিকে টেম্পলেটে আপডেট করে।
<p>{{ observableData | async }}</p>
এখানে, observableData
একটি Observable
বা Promise
হতে হবে, এবং async
পাইপটির মাধ্যমে এটি সাবস্ক্রাইব হবে এবং তার মান আপডেট হবে।
Angular-এ কাস্টম পাইপ তৈরি করাও সম্ভব। এটি আপনার নির্দিষ্ট প্রয়োজনের জন্য একটি নতুন পাইপ তৈরি করতে সাহায্য করে।
ng generate pipe custom
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'custom'
})
export class CustomPipe implements PipeTransform {
transform(value: string, args: string): string {
return value.toUpperCase() + ' ' + args;
}
}
এখানে, CustomPipe
একটি কাস্টম পাইপ যা স্ট্রিংয়ের প্রথম অংশটিকে বড় অক্ষরে রূপান্তরিত করবে এবং পরে একটি আর্গুমেন্ট যোগ করবে।
<p>{{ 'hello' | custom:'World' }}</p> <!-- HELLO World -->
Angular পাইপস অত্যন্ত শক্তিশালী টুল, যা ডেটাকে ফরম্যাট, রূপান্তর বা প্রক্রিয়া করতে সাহায্য করে। Angular এর বিল্ট-ইন পাইপস ব্যবহার করে সাধারণ ডেটা ট্রান্সফরমেশন খুবই সহজ, তবে যদি আপনার কাস্টম প্রক্রিয়ার প্রয়োজন হয় তবে কাস্টম পাইপ তৈরি করেও এটি করা যায়।
Angular পাইপ হল একটি বিশেষ ফিচার যা ডেটাকে টেমপ্লেটের মধ্যে ডিসপ্লে করার আগে কনভার্ট বা ফরম্যাট করার জন্য ব্যবহৃত হয়। এটি ডেটা ট্রান্সফরমেশনের কাজ সহজভাবে করার জন্য ডিজাইন করা হয়েছে। সাধারণত একটি কম্পোনেন্টের ডেটা ফরম্যাট বা প্রদর্শন করতে পাইপ ব্যবহার করা হয়, যেমন তারিখ, সংখ্যা, স্ট্রিং বা অন্যান্য টাইপ কাস্টমাইজ করা।
Angular পাইপ মূলত ডেটা প্রদর্শনের সময় বিভিন্ন ফরম্যাটিং এবং ট্রান্সফরমেশন অ্যাপ্লাই করার জন্য ব্যবহৃত হয়, যাতে UI তে আরও পরিষ্কার ও উপযুক্ত ডেটা প্রদর্শিত হয়।
পাইপ সাধারণত Angular টেমপ্লেটে ব্যবহৃত হয় এবং এটি |
(pipe) চিহ্নের মাধ্যমে অ্যাপ্লাই করা হয়। এটি একটি ফাংশনালিটি হিসেবে কাজ করে যা ইনপুট ডেটার উপর কোনো নির্দিষ্ট ফরম্যাটিং বা কনভার্সন করে আউটপুট প্রদান করে।
উদাহরণস্বরূপ, আপনি যদি একটি তারিখ প্রদর্শন করতে চান, তবে তারিখটি একটি নির্দিষ্ট ফরম্যাটে দেখানোর জন্য পাইপ ব্যবহার করতে পারেন।
<p>{{ currentDate | date:'short' }}</p>
এখানে, date
পাইপটি currentDate
ভ্যালুকে একটি নির্দিষ্ট ফরম্যাটে রেন্ডার করবে।
Angular-এ বিভিন্ন ধরনের বিল্ট-ইন পাইপ রয়েছে যা সাধারণত ব্যবহৃত হয়:
date
পাইপটি তারিখ এবং সময়কে একটি নির্দিষ্ট ফরম্যাটে রেন্ডার করতে ব্যবহৃত হয়।
উদাহরণ:
<p>{{ currentDate | date:'yyyy/MM/dd' }}</p>
এখানে, currentDate
একটি তারিখ এবং এটি yyyy/MM/dd
ফরম্যাটে প্রদর্শিত হবে।
currency
পাইপটি সংখ্যা বা অর্থকে একটি নির্দিষ্ট মুদ্রার ফরম্যাটে কনভার্ট করতে ব্যবহৃত হয়।
উদাহরণ:
<p>{{ amount | currency:'USD' }}</p>
এখানে, amount
ভ্যালুটিকে USD (ডলার) মুদ্রায় কনভার্ট করা হবে।
percent
পাইপটি সংখ্যাকে শতাংশ ফরম্যাটে কনভার্ট করে।
উদাহরণ:
<p>{{ 0.25 | percent }}</p>
এটি ২৫% হিসেবে প্রদর্শিত হবে।
uppercase
এবং lowercase
পাইপগুলি স্ট্রিংয়ের কেস পরিবর্তন করতে ব্যবহৃত হয়।
উদাহরণ:
<p>{{ 'hello world' | uppercase }}</p> <!-- OUTPUT: HELLO WORLD -->
<p>{{ 'HELLO WORLD' | lowercase }}</p> <!-- OUTPUT: hello world -->
json
পাইপটি অবজেক্ট বা অ্যারে ডেটাকে JSON স্ট্রিংয়ের আকারে কনভার্ট করে।
উদাহরণ:
<p>{{ user | json }}</p>
এখানে, user
নামক অবজেক্টটি JSON ফরম্যাটে রেন্ডার হবে।
slice
পাইপটি একটি স্ট্রিং বা অ্যারে থেকে নির্দিষ্ট অংশ কেটে প্রদর্শন করতে ব্যবহৃত হয়।
উদাহরণ:
<p>{{ 'Angular is great' | slice:0:7 }}</p> <!-- OUTPUT: Angular -->
যদি আপনি কোনো বিশেষ ধরনের ডেটা ট্রান্সফরমেশন করতে চান যা Angular-এর বিল্ট-ইন পাইপ দিয়ে সম্ভব না হয়, তবে আপনি নিজস্ব কাস্টম পাইপ তৈরি করতে পারেন।
কাস্টম পাইপ তৈরি করতে @Pipe
ডেকোরেটর এবং transform
মেথড ব্যবহার করতে হয়।
ধরা যাক, আমরা একটি কাস্টম পাইপ তৈরি করতে চাই যেটি একটি স্ট্রিংয়ের মধ্যে থাকা সব শব্দের প্রথম অক্ষর বড় করে দিবে:
প্রথমে, কাস্টম পাইপ তৈরি করি:
ng generate pipe capitalize
এরপরে, পাইপের কোড লিখি:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'capitalize'
})
export class CapitalizePipe implements PipeTransform {
transform(value: string): string {
if (!value) return value;
return value.replace(/\b\w/g, char => char.toUpperCase());
}
}
তারপর এই পাইপটি টেমপ্লেটে ব্যবহার করি:
<p>{{ 'hello angular world' | capitalize }}</p> <!-- OUTPUT: Hello Angular World -->
এখানে, capitalize
পাইপটি সব শব্দের প্রথম অক্ষরকে বড় করে প্রদর্শন করবে।
Angular পাইপ হল একটি শক্তিশালী ফিচার যা ডেটা প্রদর্শন বা রেন্ডার করার সময় ফরম্যাটিং এবং ট্রান্সফরমেশন করতে ব্যবহৃত হয়। বিল্ট-ইন পাইপ যেমন date
, currency
, percent
, uppercase
ইত্যাদি খুবই জনপ্রিয়, আর প্রয়োজনে কাস্টম পাইপ তৈরি করাও সম্ভব, যা বিশেষ ধরনের ডেটা প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়।
Angular-এ পাইপস হলো একটি ফিচার, যা ডেটা ট্রান্সফর্ম বা ফরম্যাট করতে ব্যবহৃত হয়। পাইপস ব্যবহার করে আপনি ডেটার উপস্থাপন পরিবর্তন করতে পারেন, যেমন তারিখ, সংখ্যা, বা টেক্সট ফরম্যাট। Angular-এ অনেক বিল্ট-ইন পাইপস রয়েছে যা সহজেই ডেটা ফরম্যাটিং বা পরিবর্তন করতে সাহায্য করে।
DatePipe ব্যবহার করে আপনি একটি তারিখের ফরম্যাট পরিবর্তন করতে পারেন। এটি Date
অবজেক্টকে একটি নির্দিষ্ট ফরম্যাটে কনভার্ট করে।
উদাহরণ:
<p>{{ currentDate | date }}</p> <!-- Default format -->
<p>{{ currentDate | date:'short' }}</p> <!-- Short date format -->
<p>{{ currentDate | date:'yyyy-MM-dd' }}</p> <!-- Custom date format -->
এখানে, currentDate
হলো একটি JavaScript Date Object, এবং date
পাইপ দিয়ে আপনি তারিখের প্রদর্শন কাস্টমাইজ করতে পারেন। আপনি বিভিন্ন ফরম্যাট ব্যবহার করতে পারেন, যেমন:
'short'
, 'medium'
, 'long'
'yyyy-MM-dd'
, 'MM/dd/yyyy'
UpperCasePipe ব্যবহার করে আপনি টেক্সটের সমস্ত অক্ষরকে বড় হাতের (uppercase) অক্ষরে পরিবর্তন করতে পারেন।
উদাহরণ:
<p>{{ 'hello world' | uppercase }}</p>
এখানে "hello world"
টেক্সটটি UpperCasePipe দ্বারা 'HELLO WORLD'
এ রূপান্তরিত হবে।
LowerCasePipe ব্যবহার করে আপনি টেক্সটের সমস্ত অক্ষরকে ছোট হাতের (lowercase) অক্ষরে পরিবর্তন করতে পারেন।
উদাহরণ:
<p>{{ 'HELLO WORLD' | lowercase }}</p>
এখানে "HELLO WORLD"
টেক্সটটি LowerCasePipe দ্বারা 'hello world'
এ রূপান্তরিত হবে।
CurrencyPipe ব্যবহার করে আপনি একটি সংখ্যাকে কারেন্সি (মুদ্রা) ফরম্যাটে রূপান্তর করতে পারেন। এটি সাধারণত টাকা বা মূল্য প্রদর্শনের জন্য ব্যবহৃত হয়।
উদাহরণ:
<p>{{ 1234.56 | currency }}</p>
<p>{{ 1234.56 | currency:'EUR' }}</p> <!-- Euro currency -->
এখানে প্রথম উদাহরণে ডিফল্ট মুদ্রা ব্যবহার হবে (যেমন: USD), এবং দ্বিতীয় উদাহরণে ইউরো (EUR) মুদ্রা হিসেবে রূপান্তরিত হবে।
DecimalPipe ব্যবহার করে আপনি একটি দশমিক সংখ্যাকে নির্দিষ্ট দশমিক স্থানে রূপান্তর করতে পারেন।
উদাহরণ:
<p>{{ 1234.5678 | number:'1.2-2' }}</p>
এখানে, 1.2-2
মানে হচ্ছে সংখ্যাটির অন্তত একটি ডিজিট থাকবে এবং দুটি দশমিক স্থান পর্যন্ত রূপান্তরিত হবে। এই কনফিগারেশনে 1234.5678
→ 1,234.57
রূপে প্রদর্শিত হবে।
PercentPipe ব্যবহার করে আপনি একটি দশমিক সংখ্যাকে শতাংশের (percentage) ফরম্যাটে রূপান্তর করতে পারেন।
উদাহরণ:
<p>{{ 0.25 | percent }}</p>
এখানে 0.25
সংখ্যাটি ২৫% হিসেবে রূপান্তরিত হবে এবং এটি '25%'
হিসাবে প্রদর্শিত হবে।
JsonPipe ব্যবহার করে আপনি একটি অবজেক্টকে JSON স্ট্রিং হিসেবে রূপান্তর করতে পারেন। এটি ডিবাগিং বা লগিংয়ের জন্য খুবই উপকারী।
উদাহরণ:
<p>{{ { name: 'John', age: 30 } | json }}</p>
এখানে, { name: 'John', age: 30 }
অবজেক্টটি JSON স্ট্রিং হিসেবে রূপান্তরিত হয়ে প্রদর্শিত হবে।
SlicePipe ব্যবহার করে আপনি একটি অ্যারে বা স্ট্রিং থেকে একটি নির্দিষ্ট অংশ কেটে নিতে পারেন।
উদাহরণ:
<p>{{ 'Angular is awesome' | slice:0:7 }}</p>
এখানে, slice:0:7
নির্দেশ করছে যে "Angular is awesome"
স্ট্রিংয়ের প্রথম ৭টি অক্ষর (যেমন: 'Angular'
) প্রদর্শিত হবে।
AsyncPipe ব্যবহার করে আপনি আসিঙ্ক্রোনাস ডেটাকে অ্যাঞ্জুলারের টেম্পলেটে সাবস্ক্রাইব করতে পারেন। এটি সাধারণত Observable বা Promise ডেটা হ্যান্ডল করতে ব্যবহৃত হয়।
উদাহরণ:
<p>{{ observableData | async }}</p>
এখানে observableData
একটি Observable এবং AsyncPipe এর মাধ্যমে এটি সাবস্ক্রাইব করা হচ্ছে। এটি ডেটার পরিবর্তন হলে টেম্পলেটে স্বয়ংক্রিয়ভাবে আপডেট হবে।
আপনি Angular-এ কাস্টম পাইপও তৈরি করতে পারেন, যা আপনার প্রয়োজন অনুযায়ী ডেটা ট্রান্সফর্ম করবে।
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'reverseString'
})
export class ReverseStringPipe implements PipeTransform {
transform(value: string): string {
return value.split('').reverse().join('');
}
}
এখানে reverseString
পাইপটি স্ট্রিংটিকে উল্টো করে রূপান্তর করবে। এর পর আপনি এটি টেম্পলেটে ব্যবহার করতে পারেন:
<p>{{ 'hello' | reverseString }}</p> <!-- Output: 'olleh' -->
Angular এর বিল্ট-ইন পাইপস ব্যবহার করে আপনি সহজেই ডেটা ফরম্যাটিং, ট্রান্সফর্ম এবং প্রদর্শন পরিবর্তন করতে পারেন। DatePipe, UpperCasePipe, CurrencyPipe ইত্যাদি পাইপস টেম্পলেটের মধ্যে ডেটা সহজে এবং কাস্টম ফরম্যাটে প্রদর্শন করতে সাহায্য করে। এছাড়াও, কাস্টম পাইপ তৈরি করে আপনি আপনার অ্যাপ্লিকেশনের জন্য প্রয়োজনীয় ডেটা ট্রান্সফর্মেশন কাস্টমাইজ করতে পারেন।
Angular-এ পাইপস ব্যবহার করে ডেটা টেম্পলেটের মধ্যে রূপান্তর বা ফরম্যাট করা যায়। উদাহরণস্বরূপ, আপনি ডেটাকে একটি নির্দিষ্ট ফরম্যাটে (যেমন তারিখ, মুদ্রা বা বড় হাতের অক্ষর) প্রদর্শন করতে চাইলে Angular এর বিল্ট-ইন পাইপগুলো ব্যবহার করতে পারেন। তবে, যদি আপনার প্রয়োজন হয় এমন কোনো কাস্টম রূপান্তর, তাহলে আপনি নিজেই একটি কাস্টম পাইপ তৈরি করতে পারেন।
কাস্টম পাইপগুলি ব্যবহারকারীর প্রয়োজন অনুযায়ী ডেটা রূপান্তরের জন্য খুবই উপকারী, যেমন নামের প্রথম অক্ষর বড় করা, নির্দিষ্ট ভাষায় টেক্সট কনভার্ট করা, ফিল্টারিং ইত্যাদি।
পাইপ ক্লাস তৈরি করুন: কাস্টম পাইপ তৈরি করতে Angular CLI ব্যবহার করা যায়। এটি কমান্ডে টাইপ করে তৈরি করা সম্ভব:
ng generate pipe pipe-name
উদাহরণস্বরূপ, একটি capitalize
পাইপ তৈরি করতে:
ng generate pipe capitalize
এই কমান্ডটি capitalize.pipe.ts
নামে একটি পাইপ ক্লাস তৈরি করবে।
ধরা যাক, আপনি একটি কাস্টম পাইপ তৈরি করতে চান যেটি একটি স্ট্রিংয়ের প্রথম অক্ষর বড় করবে (capitalize first letter):
capitalize.pipe.ts
:import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'capitalize'
})
export class CapitalizePipe implements PipeTransform {
transform(value: string): string {
if (!value) {
return value;
}
return value.charAt(0).toUpperCase() + value.slice(1);
}
}
এখানে:
@Pipe
ডেকোরেটর পাইপটির নাম নির্ধারণ করে, যা টেম্পলেটের মধ্যে ব্যবহৃত হবে (এখানে capitalize
)।transform
মেথডে পাইপের কার্যকরী লজিক থাকে। এখানে, এটি প্রথম অক্ষরকে বড় করতে কাজ করে।একবার কাস্টম পাইপ তৈরি হয়ে গেলে, আপনি এটি Angular টেম্পলেটে ব্যবহার করতে পারেন।
<p>{{ 'hello world' | capitalize }}</p>
এখানে, hello world
স্ট্রিংটি কাস্টম capitalize
পাইপ ব্যবহার করে প্রথম অক্ষর বড় হয়ে Hello world
হিসাবে রেন্ডার হবে।
কাস্টম পাইপগুলি আরও জটিল লজিকও পরিচালনা করতে পারে, যেমন সংখ্যা ফরম্যাটিং, মুদ্রার রূপান্তর, বা ডেটা ফিল্টারিং। নিচে একটি উন্নত পাইপের উদাহরণ দেওয়া হলো, যা একটি নির্দিষ্ট মুদ্রায় একটি সংখ্যা রূপান্তর করবে।
currency-format.pipe.ts
:import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'currencyFormat'
})
export class CurrencyFormatPipe implements PipeTransform {
transform(value: number, currencySymbol: string = '$'): string {
if (value == null) {
return '';
}
return `${currencySymbol}${value.toFixed(2)}`;
}
}
এখানে, এই পাইপটি একটি সংখ্যা রূপান্তর করবে এবং একটি মুদ্রার সিম্বল যোগ করবে। আপনি প্রয়োজন অনুযায়ী মুদ্রার সিম্বল পরিবর্তন করতে পারেন।
<p>{{ 1234.567 | currencyFormat:'€' }}</p>
এখানে, সংখ্যা 1234.567
মুদ্রার সিম্বল €
যোগ করে রূপান্তরিত হবে এবং €1234.57
প্রদর্শিত হবে (দ্বিতীয় দশমিকের পর দুটি সংখ্যা দেখানো হবে)।
Angular পাইপগুলি সাধারণত Pure Pipes হিসেবে কাজ করে, যার মানে হলো তারা শুধুমাত্র ইনপুট পরিবর্তিত হলে ট্রান্সফর্মেশন করে। এর ফলে, একই ইনপুট বারবার ট্রান্সফর্ম করলে পাইপটি পুনরায় রেন্ডার হবে না।
যদি আপনি কোনো পাইপের মধ্যে এমন কিছু লজিক ব্যবহার করেন যেটি ইনপুটের পরিবর্তন ছাড়া ট্রিগার হবে, তখন সেগুলো Impure Pipe হিসেবে ব্যবহৃত হতে পারে। তবে impure pipes পারফরমেন্সে কিছুটা প্রভাব ফেলতে পারে, তাই এটি ব্যবহার করার সময় সতর্কতা অবলম্বন করা উচিত।
কাস্টম পাইপ Angular অ্যাপ্লিকেশনে ডেটার রূপান্তর করার শক্তিশালী উপায়। এটি সহজে ইউজার ইন্টারফেসে ডেটাকে রূপান্তর করতে এবং কাস্টম ফরম্যাটে দেখাতে সাহায্য করে। Angular CLI দিয়ে দ্রুত কাস্টম পাইপ তৈরি করা সম্ভব, এবং তা টেম্পলেটে ব্যবহার করা সহজ।
Angular-এ অ্যাসিঙ্ক পাইপ (Async Pipe) হলো একটি বিশেষ পাইপ যা Observables বা Promises এর মানকে অ্যাসিঙ্ক্রোনাসভাবে হ্যান্ডল করতে ব্যবহৃত হয়। এটি একটি অদ্ভুত ও শক্তিশালী টুল যা ডেটাকে অ্যাসিঙ্ক্রোনাসভাবে সাবস্ক্রাইব করে এবং ডেটা পরিবর্তিত হলে তা স্বয়ংক্রিয়ভাবে কম্পোনেন্টের ভিউতে রেন্ডার করে। সাধারণত, অ্যাসিঙ্ক পাইপ ব্যবহৃত হয় যখন ডেটা ফেচিং বা অ্যাসিঙ্ক্রোনাস অপারেশন যেমন HTTP কল বা টাইমার থেকে আসছে।
ধরা যাক, একটি অ্যাসিঙ্ক্রোনাস HTTP রিকোয়েস্ট রয়েছে যা কিছু ডেটা ফেচ করে, এবং সেই ডেটা Angular টেমপ্লেটে দেখাতে চান।
কম্পোনেন্ট (TypeScript):
import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
@Component({
selector: 'app-user',
templateUrl: './user.component.html'
})
export class UserComponent implements OnInit {
users$: Observable<any>;
constructor(private http: HttpClient) { }
ngOnInit() {
this.users$ = this.http.get<any>('https://jsonplaceholder.typicode.com/users');
}
}
এখানে, users$
একটি Observable যা HTTP কলের মাধ্যমে ব্যবহারকারীদের ডেটা ফেচ করবে।
টেমপ্লেট (HTML):
<ul>
<li *ngFor="let user of users$ | async">
{{ user.name }}
</li>
</ul>
এখানে, users$
একটি Observable যা async
পাইপ দ্বারা সাবস্ক্রাইব করা হচ্ছে। যখনই users$
-এর মান পরিবর্তিত হবে (যেমন HTTP কলের রেসপন্স আসবে), Angular স্বয়ংক্রিয়ভাবে DOM-এ পরিবর্তনগুলি রেন্ডার করবে। আপনি ম্যানুয়ালি .subscribe()
বা .unsubscribe()
করার প্রয়োজন পড়বে না।
অ্যাসিঙ্ক পাইপ শুধুমাত্র Observables-এ কাজ করে না, এটি Promises থেকেও ডেটা সাবস্ক্রাইব করে। এটি তখন ব্যবহৃত হতে পারে যখন আপনি কোনো অ্যাসিঙ্ক্রোনাস অপারেশন (যেমন একটি HTTP কল যা Promise রিটার্ন করে) থেকে ডেটা পেতে চান।
কম্পোনেন্ট (TypeScript):
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-user',
templateUrl: './user.component.html'
})
export class UserComponent implements OnInit {
userPromise: Promise<any>;
ngOnInit() {
this.userPromise = this.fetchUser();
}
fetchUser(): Promise<any> {
return new Promise(resolve => {
setTimeout(() => {
resolve({ name: 'John Doe', age: 30 });
}, 2000);
});
}
}
টেমপ্লেট (HTML):
<div *ngIf="userPromise | async as user; else loading">
<p>Name: {{ user.name }}</p>
<p>Age: {{ user.age }}</p>
</div>
<ng-template #loading>
<p>Loading...</p>
</ng-template>
এখানে, userPromise
একটি Promise, এবং async
পাইপের মাধ্যমে এটি সাবস্ক্রাইব করা হচ্ছে। যেহেতু Promise টা অ্যাসিঙ্ক্রোনাস, তাই Angular নিজে এটি অ্যাসিঙ্ক্রোনাসভাবে রেন্ডার করবে এবং রেসপন্স আসলে user
ডেটা টেমপ্লেটে দেখাবে।
.subscribe()
এবং .unsubscribe()
করার প্রয়োজন নেই।অ্যাসিঙ্ক পাইপ Angular অ্যাপ্লিকেশনের জন্য একটি অত্যন্ত কার্যকর টুল, যা অ্যাসিঙ্ক্রোনাস ডেটার সাবস্ক্রিপশন এবং রেন্ডারিং প্রক্রিয়া সহজ করে দেয়। এটি কম্পোনেন্টের ভিউতে অ্যাসিঙ্ক্রোনাস ডেটা নিরাপদে এবং দক্ষতার সাথে প্রদর্শন করতে সহায়তা করে, এবং Angular নিজেই সাবস্ক্রিপশন এবং আনসাবস্ক্রিপশন হ্যান্ডল করে, ফলে কোড পরিষ্কার এবং মেইন্টেনেবল হয়।
Read more