@ ভিউচাইল্ড ব্যবহার করে একাধিক ভিউচিল্ডার অ্যাক্সেস করুন


142

আমি একটি কাস্টম উপাদান তৈরি করেছি যা আমি লুপের জন্য যেমন স্থাপন করেছি

<div *ngFor="let view of views">

     <customcomponent></customcomponent>

</div>

যার আউটপুট হবে:

<customcomponent></customcomponent>
<customcomponent></customcomponent>
<customcomponent></customcomponent>

আমি জানতে চাই যে কীভাবে আমি এই উপাদানগুলির সংখ্যা পরিবর্তিত হতে পারে যখন @ ভিউচাইল্ড সিনট্যাক্স বা অন্য কোনও উপায় ব্যবহার করে এই উপাদানগুলির একটি রেফারেন্স পেতে পারি

যখন উপাদানটি একটি নাম দেওয়া যেতে পারে

<customcomponent #compID></customcomponent>

আমি এরপরে নীচে এটি উল্লেখ করতে পারি:

@ViewChild('compID') test: CustomComponent

উদাহরণস্বরূপ, কোনও সূচক সম্ভবত ব্যবহার না করে আমি কীভাবে এটি উল্লেখ করব?

(এই প্রশ্নটি নীচের তালিকাভুক্ত উত্তরগুলি আগে দেখা যেতে পারে এমন অন্যান্য প্রশ্নের মতো এলিমেন্টআরফ ব্যবহারের সাথে সম্পর্কিত নয়) এই প্রশ্নটি একাধিক @ ভিউচিল্ড অ্যাক্সেস করা এবং তালিকাগুলি প্রশ্নের ব্যবহার ব্যবহার সম্পর্কিত।

উত্তর:


233

উপাদানগুলির একটি রেফারেন্স পেতে @ViewChildrenথেকে ব্যবহার করুন@angular/core

টেমপ্লেট

<div *ngFor="let v of views">
    <customcomponent #cmp></customcomponent>
</div>

উপাদান

import { ViewChildren, QueryList } from '@angular/core';

/** Get handle on cmp tags in the template */
@ViewChildren('cmp') components:QueryList<CustomComponent>;

ngAfterViewInit(){
    // print array of CustomComponent objects
    console.log(this.components.toArray());
}

সরাসরি নমুনা


4
এটি বলছে ._ ফলাফলগুলি একটি ব্যক্তিগত ফাংশন। এটিও উপাদানগুলি আমার জন্য একটি তালিকা নয় কেবল একটি একক উপাদান। আপনি সরবরাহ করতে পারে আর কোন সাহায্য?
স্যাম আলেকজান্ডার

19
@ সাম অ্যালেক্সান্দার আপনি #cmp নাম দিয়ে উপাদানগুলির অ্যারে পেতে এই ডটকম্পটোনস.টোরআরএ () ব্যবহার করতে পারেন
ডেভিডজি সোলা

4
এটি অ্যাজাক্স প্রতিক্রিয়াতে কীভাবে কাজ করে ?, @ ভিউচিল্ডেন টিউর ভিউয়ের পরে ট্রিগার করা হয়, তবে মডেল (এনজিফোর্ডের) পরিবর্তনের পরে নয়। আমি কীভাবে এটির জন্য ট্রিগার করতে পারি?
এল্পারফিরিও

@ ইলফোরফিরিও পদ্ধতিটি প্রয়োগ করুন AfterViewCheckedএবং লিখুন ngAfterViewChecked। ভিউ আপডেট হওয়ার পরে এই পদ্ধতিটি প্রতিটি পরিবর্তন চক্রকে ট্রিগার করে। এর মধ্যে, আপনি নিজের ভিউচিল্ড উদাহরণটি সংজ্ঞায়িত করা হয়েছে কিনা তা পরীক্ষা করতে পারেন। দস্তাবেজগুলি দেখুন
বিটলজুইস

4
কিছু মনে করবেন না, আমি এটি খুঁজে পেয়েছি যা বিষয়গুলিকে আরও বিশদে ব্যাখ্যা করে : নেটবাসাল.com /… @ ভিউচিল্ড্রেনের উপাদানটির নাম ব্যবহার করে আপনি এইচটিএমএলে নিযুক্ত # নাম ব্যবহার করার পরিবর্তে ভিন্ন রিটার্নের ফলাফল দেয়।
rmchaharry

71

কোয়েরিলিস্টের সাথে মিলিত @ ভিউচিল্ড্রেন ডেকরেটার ব্যবহার করুন। এগুলি উভয়ই "@ কৌনিক / মূল" থেকে

@ViewChildren(CustomComponent) customComponentChildren: QueryList<CustomComponent>;

প্রতিটি সন্তানের সাথে কিছু করা দেখে মনে হচ্ছে: this.customComponentChildren.forEach((child) => { child.stuff = 'y' })

Angular.io এ আরও ডকুমেন্টেশন রয়েছে, বিশেষত: https://angular.io/docs/ts/latest/cookbook/comp घटक-communication.html#!#sts=Pare%20call%20a%20VVChild

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.