ইনজেকশন দেওয়া ElementRef
এবং querySelector
সেখান থেকে ব্যবহার করা বা অনুরূপ করার পরিবর্তে একটি ঘোষিত উপায় সরাসরি ভিউতে উপাদানগুলিতে অ্যাক্সেস করার পরিবর্তে ব্যবহার করা যেতে পারে:
<input #myname>
@ViewChild('myname') input;
উপাদান
ngAfterViewInit() {
console.log(this.input.nativeElement.value);
}
স্ট্যাকব্লিটজ উদাহরণ
- @ ভিউচাইল্ড () প্যারামিটার হিসাবে নির্দেশক বা উপাদান ধরণের বা কোনও টেম্পলেট ভেরিয়েবলের নাম (স্ট্রিং) সমর্থন করে।
- @ ভিউচিল্ডেন () কমা বিচ্ছিন্ন তালিকা হিসাবে বর্তমানে নামের একটি তালিকা সমর্থন করে (বর্তমানে কোনও জায়গার অনুমতি নেই
@ViewChildren('var1,var2,var3')
)।
- @ কনটেন্টচিল্ড () এবং @ কনটেন্টচিল্ডেন () একই কাজ করে তবে হালকা ডিওএম (
<ng-content>
প্রস্তাবিত উপাদান)।
উত্তরপুরূষ
@ContentChildren()
একমাত্র এটিই বংশধরদের অনুসন্ধান করতে সহায়তা করে
@ContentChildren(SomeTypeOrVarName, {descendants: true}) someField;
{descendants: true}
ডিফল্ট হওয়া উচিত তবে ২.০.০ চূড়ান্ত নয় এবং এটি একটি বাগ হিসাবে বিবেচিত যা
এটি ২.০.১ এ স্থির করা হয়েছিল
পড়া
যদি কোনও উপাদান থাকে এবং নির্দেশ থাকে তবে read
প্যারামিটারটি উল্লেখ করতে দেয় যে কোন উদাহরণটি ফিরে আসা উচিত।
উদাহরণস্বরূপ ViewContainerRef
যে ডিফল্ট পরিবর্তে গতিশীল তৈরি উপাদান দ্বারা প্রয়োজনীয়ElementRef
@ViewChild('myname', { read: ViewContainerRef }) target;
পরিবর্তনগুলি সাবস্ক্রাইব করুন
তথাপি বাচ্চাদের কেবল যখন ngAfterViewInit()
ডাকা হয় এবং কনটেন্ট বাচ্চাদের যখন ডাকা হয় তখনই সেট ngAfterContentInit()
করা হয়, আপনি যদি কোয়েরির ফলাফলের পরিবর্তনের জন্য সাবস্ক্রাইব করতে চান তবে এটি করা উচিতngOnInit()
https://github.com/angular/angular/issues/9689#issuecomment-229247134
@ViewChildren(SomeType) viewChildren;
@ContentChildren(SomeType) contentChildren;
ngOnInit() {
this.viewChildren.changes.subscribe(changes => console.log(changes));
this.contentChildren.changes.subscribe(changes => console.log(changes));
}
সরাসরি ডিওএম অ্যাক্সেস
কেবল ডোম উপাদানগুলিকেই জিজ্ঞাসা করতে পারে তবে উপাদান বা নির্দেশমূলক উদাহরণ নয়:
export class MyComponent {
constructor(private elRef:ElementRef) {}
ngAfterViewInit() {
var div = this.elRef.nativeElement.querySelector('div');
console.log(div);
}
// for transcluded content
ngAfterContentInit() {
var div = this.elRef.nativeElement.querySelector('div');
console.log(div);
}
}
স্বেচ্ছাসেবক অভিক্ষিপ্ত সামগ্রী পেতে
দেখুন অ্যাকসেস প্রতিলিপ্ত বিষয়বস্তু