টিএল; ডিআর :
না, তাদের ম্যানুয়ালি সাবস্ক্রাইব করবেন না, পরিষেবাগুলিতে তাদের ব্যবহার করবেন না। ডকুমেন্টেশনে যেমন উপাদানগুলিতে ইভেন্ট নির্গত হয় তেমনগুলি ব্যবহার করুন। কৌণিক বিমূর্ততা পরাস্ত করবেন না।
উত্তর:
না, আপনার এটিতে ম্যানুয়ালি সাবস্ক্রাইব করা উচিত নয়।
ইভেন্টএমিটার একটি কৌনিক 2 বিমূর্ততা এবং এর একমাত্র উদ্দেশ্য উপাদানগুলিতে ইভেন্টগুলি নির্গত করা। রব ওয়ার্মল্ডের একটি মন্তব্য উদ্ধৃত করে
[...] ইভেন্টইমিটারটি সত্যই একটি কৌণিক বিমূর্ততা, এবং কেবলমাত্র উপাদানগুলিতে কাস্টম ইভেন্টগুলি নির্গত করার জন্য ব্যবহার করা উচিত। অন্যথায়, কেবল আরএক্স ব্যবহার করুন যেন এটি অন্য কোনও লাইব্রেরি।
এটি ইভেন্টইমিটারের ডকুমেন্টেশনে সত্যই পরিষ্কারভাবে বলা হয়েছে।
কাস্টম ইভেন্টগুলি নির্গত করার জন্য নির্দেশনা এবং উপাদানগুলি ব্যবহার করুন।
এটি ব্যবহারে কী ভুল?
অ্যাঙ্গুলার 2 কখনই আমাদের গ্যারান্টি দেয় না যে ইভেন্টইমিটার পর্যবেক্ষণযোগ্য হতে থাকবে। সুতরাং এর অর্থ হল যদি আমাদের কোডটি পরিবর্তন হয় তবে তা পুনরুদ্ধার করা। আমাদের কেবলমাত্র এপিআইতে প্রবেশ করতে হবে এটি এর emit()
পদ্ধতি its আমাদের কোনও ইভেন্ট ইভেন্টে ম্যানুয়ালি সাবস্ক্রাইব করা উচিত নয়।
উপরে বর্ণিত সমস্তগুলি এই ওয়ার্ড বেলের মন্তব্যে (নিবন্ধটি পড়ার জন্য প্রস্তাবিত, এবং সেই মন্তব্যের উত্তর ) আরও স্পষ্ট । রেফারেন্সের জন্য উদ্ধৃতি
পর্যবেক্ষণযোগ্য হিসাবে অবিরত ইভেন্টইমিটারে বিশ্বাস করবেন না!
ভবিষ্যতে সেই পর্যবেক্ষণযোগ্য অপারেটররা রয়েছেন বলে গন্য করবেন না!
এগুলি শীঘ্রই হ্রাস করা হবে এবং সম্ভবত মুক্তির আগে মুছে ফেলা হবে।
কেবলমাত্র শিশু এবং পিতামাতার উপাদানগুলির মধ্যে ইভেন্ট বন্ডিংয়ের জন্য ইভেন্টএমিটার ব্যবহার করুন। এটিতে সাবস্ক্রাইব করবেন না। এই পদ্ধতির কোনও কল করবেন না। শুধু কলeve.emit()
তাঁর মন্তব্য রবের মন্তব্যের সাথে সামঞ্জস্যপূর্ণ বহু আগে।
তো, কীভাবে এটি সঠিকভাবে ব্যবহার করবেন?
আপনার উপাদান থেকে ইভেন্টগুলি নির্গত করতে কেবল এটি ব্যবহার করুন। নীচের উদাহরণটি একবার দেখুন।
@Component({
selector : 'child',
template : `
<button (click)="sendNotification()">Notify my parent!</button>
`
})
class Child {
@Output() notifyParent: EventEmitter<any> = new EventEmitter();
sendNotification() {
this.notifyParent.emit('Some value to send to the parent');
}
}
@Component({
selector : 'parent',
template : `
<child (notifyParent)="getNotification($event)"></child>
`
})
class Parent {
getNotification(evt) {
// Do something with the notification (evt) sent by the child!
}
}
কীভাবে এটি ব্যবহার করবেন না?
class MyService {
@Output() myServiceEvent : EventEmitter<any> = new EventEmitter();
}
ঠিক এখনই থামো ... আপনি ইতিমধ্যে ভুল ...
আশা করা যায় যে এই দুটি সহজ উদাহরণ ইভেন্টেমিটারের সঠিক ব্যবহার সম্পর্কে স্পষ্ট করবে।