কৌণিক একটি অর্ডার নিয়ে আসে না বাক্স থেকে ফিল্টার আউট, তবে আমরা যদি সিদ্ধান্ত নিই যে আমাদের একটি প্রয়োজন হয় তবে আমরা সহজেই একটি তৈরি করতে পারি। গতি এবং মিনিফিকেশন সম্পর্কে আমাদের কিছু সচেতন হওয়া দরকার। নিচে দেখ.
একটি সাধারণ পাইপ দেখতে এরকম কিছু হবে।
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'sort'
})
export class SortPipe implements PipeTransform {
transform(ary: any, fn: Function = (a,b) => a > b ? 1 : -1): any {
return ary.sort(fn)
}
}
এই পাইপটি একটি বাছাই ফাংশন ( fn
) গ্রহণ করে এবং এটি একটি ডিফল্ট মান দেয় যা আধ্যাত্মিক উপায়ে আদিমদের অ্যারেটিকে সাজিয়ে তোলে। আমরা চাইলে এই সাজানোর ক্রিয়াকে ওভাররাইড করার বিকল্প রয়েছে।
এটি কোনও গুণবাচক নামটিকে স্ট্রিং হিসাবে গ্রহণ করে না, কারণ অ্যাট্রিবিউটের নামগুলি হ্রাসের বিষয়। যখন আমরা আমাদের কোডটি মিনিমাইফ করব তখন সেগুলি পরিবর্তন হবে, তবে টেমপ্লেটের স্ট্রিংয়ের মান হ্রাস করার জন্য মিনিফায়ারগুলি যথেষ্ট স্মার্ট নয়।
বাছাই করা আদিম (সংখ্যা এবং স্ট্রিং)
আমরা এটি ডিফল্ট তুলক ব্যবহার করে একটি সংখ্যা বা স্ট্রিং সাজানোর জন্য এটি ব্যবহার করতে পারি:
import { Component } from '@angular/core';
@Component({
selector: 'cat',
template: `
{{numbers | sort}}
{{strings | sort}}
`
})
export class CatComponent
numbers:Array<number> = [1,7,5,6]
stringsArray<string> = ['cats', 'hats', 'caveats']
}
বস্তুর একটি অ্যারে বাছাই করা হচ্ছে
আমরা যদি বস্তুর একটি অ্যারে বাছাই করতে চাই তবে আমরা এটিকে তুলনামূলক ফাংশন দিতে পারি।
import { Component } from '@angular/core';
@Component({
selector: 'cat',
template: `
{{cats | sort:byName}}
`
})
export class CatComponent
cats:Array<Cat> = [
{name: "Missy"},
{name: "Squoodles"},
{name: "Madame Pompadomme"}
]
byName(a,b) {
return a.name > b.name ? 1 : -1
}
}
ক্যাভেটস - খাঁটি বনাম অপরিষ্কার পাইপ
কৌণিক 2 খাঁটি এবং অপরিষ্কার পাইপ ধারণা আছে।
একটি খাঁটি পাইপ অবজেক্টের পরিচয় ব্যবহার করে পরিবর্তন সনাক্তকরণকে অনুকূল করে। এর অর্থ হ'ল পাইপটি কেবল তখনই চলবে যদি ইনপুট অবজেক্টটি পরিচয় পরিবর্তন করে, উদাহরণস্বরূপ যদি আমরা অ্যারেতে একটি নতুন আইটেম যুক্ত করি। এটি বস্তুগুলিতে উত্থিত হবে না। এর অর্থ হল যে আমরা যদি নেস্টেড বৈশিষ্ট্য পরিবর্তন করি: this.cats[2].name = "Fluffy"
উদাহরণস্বরূপ, পাইপটি পুনরায় চালু হবে না। এটি কৌনিক দ্রুত হতে সাহায্য করে। কৌণিক পাইপগুলি ডিফল্টরূপে খাঁটি।
অন্যদিকে একটি অপরিষ্কার পাইপ বস্তুর বৈশিষ্ট্যগুলি পরীক্ষা করবে। এটি সম্ভবত এটি অনেক ধীর করে তোলে। যেহেতু পাইপ ফাংশনটি কী করবে তা গ্যারান্টি দিতে পারে না (উদাহরণস্বরূপ এটি দিনের সময়ের উপর ভিত্তি করে এটি আলাদাভাবে বাছাই করা হয়েছে), ততবার অ্যাসিঙ্ক্রোনাস ইভেন্ট সংঘটিত হওয়ার সাথে সাথে একটি অশুদ্ধ পাইপ চলবে। অ্যারে বড় হলে এটি আপনার অ্যাপ্লিকেশনটিকে যথেষ্ট গতি কমিয়ে দেবে।
উপরের পাইপটি খাঁটি। এর অর্থ এটি কেবল তখনই চলবে যখন অ্যারেতে থাকা অবজেক্টগুলি অপরিবর্তনীয়। আপনি যদি একটি বিড়াল পরিবর্তন করেন তবে আপনাকে অবশ্যই পুরো বিড়ালের বস্তুকে নতুন দিয়ে প্রতিস্থাপন করতে হবে।
this.cats[2] = {name:"Tomy"}
আমরা বিশুদ্ধ বৈশিষ্ট্যটি সেট করে উপরেরটিকে একটি অপরিষ্কার পাইপে পরিবর্তন করতে পারি:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'sort',
pure: false
})
export class SortPipe implements PipeTransform {
transform(ary: any, fn: Function = (a,b) => a > b ? 1 : -1): any {
return ary.sort(fn)
}
}
এই পাইপ বস্তুগুলিতে নেমে আসবে তবে ধীর হবে। সতর্কতার সাথে ব্যবহার করুন.