কৌণিক 2 পরিবর্তন সনাক্তকরণ: এনজিও নেস্টেড অবজেক্টের জন্য গুলি চালাচ্ছে না


129

আমি জানি আমি এই সম্পর্কে জিজ্ঞাসা করা প্রথম নই, তবে পূর্ববর্তী প্রশ্নগুলির উত্তর খুঁজে পাই না। আমি একটি উপাদান এই আছে

<div class="col-sm-5">
    <laps
        [lapsData]="rawLapsData"
        [selectedTps]="selectedTps"
        (lapsHandler)="lapsHandler($event)">
    </laps>
</div>

<map
    [lapsData]="rawLapsData"
    class="col-sm-7">
</map>

নিয়ামক rawLapsdataসময়ে সময়ে পরিবর্তিত হয়।

ইন laps, ডেটাটি একটি সারণী বিন্যাসে HTML হিসাবে আউটপুট হয়। এই পরিবর্তন যখনই rawLapsdataপরিবর্তন।

গুগল ম্যাপে চিহ্নিতকরণগুলিকে পুনরায় আঁকতে আমার mapউপাদানটির ngOnChangesট্রিগার হিসাবে ব্যবহার করা দরকার । সমস্যাটি হ'ল rawLapsDataপিতামাতার পরিবর্তিত হলে ngOnChanges গুলি চালায় না । আমি কি করতে পারি?

import {Component, Input, OnInit, OnChanges, SimpleChange} from 'angular2/core';

@Component({
    selector: 'map',
    templateUrl: './components/edMap/edMap.html',
    styleUrls: ['./components/edMap/edMap.css']
})
export class MapCmp implements OnInit, OnChanges {
    @Input() lapsData: any;
    map: google.maps.Map;

    ngOnInit() {
        ...
    }

    ngOnChanges(changes: { [propName: string]: SimpleChange }) {
        console.log('ngOnChanges = ', changes['lapsData']);
        if (this.map) this.drawMarkers();
    }

আপডেট: এনজিওনচেনজেসগুলি কাজ করছে না, তবে মনে হচ্ছে ল্যাপস্যাটা আপডেট হচ্ছে। এনজিআইনেটে হ'ল জুম পরিবর্তনের জন্য ইভেন্ট শ্রোতা যা কল করে this.drawmarkers। আমি যখন জুম পরিবর্তন করি তখন আমি অবশ্যই চিহ্নিতকারীগুলিতে পরিবর্তন দেখতে পাই। সুতরাং একমাত্র সমস্যা হ'ল ইনপুট ডেটা পরিবর্তনের সময় আমি বিজ্ঞপ্তিটি পাই না।

পিতামাতার মধ্যে, আমার এই লাইন আছে। (মনে রাখবেন যে পরিবর্তনটি কোলে প্রতিফলিত হয়েছে তবে মানচিত্রে নয়)।

this.rawLapsData = deletePoints(this.rawLapsData, this.selectedTps);

এবং নোট করুন যে this.rawLapsDataএটি নিজেই একটি বৃহত জসন বস্তুর মাঝখানে পয়েন্টার

this.rawLapsData = this.main.data.TrainingCenterDatabase.Activities[0].Activity[0].Lap;

আপনার কোড ডেটা আপডেট করা হয় বা ডেটা কী ধরণের তা দেখায় না। একটি নতুন উদাহরণ বরাদ্দ করা হয়েছে বা পরিবর্তিত মূল্যের একটি সম্পত্তি?
গন্টার জ্যাচবাউয়ার

@ গন্তেরজ্যাচবাউয়ার আমি প্যারেন্ট উপাদানটি থেকে লাইনটি যুক্ত করেছি
সাইমন এইচ

আমি অনুমান করি যে এই লাইনটি মোড়ানোর zone.run(...)পরে এটি করা উচিত।
গন্টার জ্যাচবাউর

1
আপনার অ্যারে (রেফারেন্স) পরিবর্তন হচ্ছে না, তাই কল করা ngOnChanges()হবে না। ngDoCheck()অ্যারের সামগ্রীগুলি পরিবর্তন হয়েছে কিনা তা নির্ধারণ করতে আপনি নিজের যুক্তি ব্যবহার করতে এবং প্রয়োগ করতে পারেন । lapsDataআপডেট করা হয়েছে কারণ এটির / হিসাবে একই অ্যারেটির একটি রেফারেন্স রয়েছে rawLapsData
রাজকোক

1
1) ল্যাপস উপাদানগুলিতে আপনার কোড / টেমপ্লেট ল্যাপসডাটা অ্যারেতে প্রতিটি প্রবেশের উপরে লুপ করে এবং বিষয়বস্তু প্রদর্শন করে, সুতরাং প্রদর্শিত প্রতিটি ডাটাতে কৌণিক বাইন্ডিং রয়েছে। 2) এমনকি কৌনিক কোনও উপাদানগুলির ইনপুট বৈশিষ্ট্যে কোনও পরিবর্তন (রেফারেন্স চেকিং) সনাক্ত না করে, এটি এখনও (ডিফল্টরূপে) সমস্ত টেম্পলেট বাইন্ডিং পরীক্ষা করে। এইভাবে কীভাবে ল্যাপগুলি পরিবর্তনগুলি দেখায়। )) মানচিত্রের উপাদানটির ল্যাপসটা ডেটা ইনপুট সম্পত্তিটিতে টেমপ্লেটে কোনও বাঁধাই না থাকতে পারে? যে পার্থক্য ব্যাখ্যা করবে।
রাজকোক

উত্তর:


153

rawLapsData আপনি যদি অ্যারের বিষয়বস্তুগুলি পরিবর্তন করেন (যেমন, আইটেমগুলি যুক্ত করুন, আইটেমগুলি সরিয়ে ফেলুন, কোনও আইটেম পরিবর্তন করুন) এমনকি একই অ্যারেতে নির্দেশ করতে থাকে।

পরিবর্তন সনাক্তকরণের সময়, যখন কৌণিক পরিবর্তনের জন্য উপাদানগুলির ইনপুট বৈশিষ্ট্যগুলি পরীক্ষা করে, এটি ===নোংরা চেকিংয়ের জন্য (প্রয়োজনীয়ভাবে) ব্যবহার করে। অ্যারেগুলির জন্য, এর অর্থ অ্যারে রেফারেন্সগুলি (কেবলমাত্র) নোংরা চেক করা হয়েছে। rawLapsDataঅ্যারে রেফারেন্স যেহেতু পরিবর্তন হচ্ছে না, কল করা ngOnChanges()হবে না।

আমি দুটি সম্ভাব্য সমাধান সম্পর্কে ভাবতে পারি:

  1. ngDoCheck()অ্যারে বিষয়বস্তু পরিবর্তন হয়েছে কিনা তা নির্ধারণ করতে আপনার নিজস্ব পরিবর্তন সনাক্তকরণ যুক্তি প্রয়োগ করুন এবং সম্পাদন করুন। (লাইফাইসাইকেল হুকস ডকের একটি উদাহরণ রয়েছে ।)

  2. আপনি rawLapsDataযখনই অ্যারে সামগ্রীতে কোনও পরিবর্তন করেন তখন এটিকে একটি নতুন অ্যারে বরাদ্দ করুন । তারপরে ngOnChanges()বলা হবে কারণ অ্যারে (রেফারেন্স) পরিবর্তন হিসাবে উপস্থিত হবে।

আপনার উত্তরে আপনি আরও একটি সমাধান নিয়ে এসেছেন।

এখানে ওপিতে কিছু মন্তব্য পুনরাবৃত্তি:

আমি এখনও দেখতে পাচ্ছি না কীভাবে lapsপরিবর্তনটি কীভাবে তুলতে পারে (অবশ্যই এটি ngOnChanges()নিজের সমতুল্য কিছু ব্যবহার করা উচিত ?) mapনা পারার সময় ।

  • ইন lapsপ্রতিটি এন্ট্রি উপর কম্পোনেন্ট আপনার কোড / টেমপ্লেট লুপ lapsDataঅ্যারের, এবং প্রদর্শন বিষয়বস্তু, তাই তথ্য প্রতিটি টুকরা করে প্রদর্শিত হয় কৌণিক বাইন্ডিং হয়।
  • এমনকি যখন কৌণিক কোনও উপাদানগুলির ইনপুট বৈশিষ্ট্যগুলিতে ( ===চেকিং ব্যবহার করে ) কোনও পরিবর্তন সনাক্ত না করে , তবুও এটি (ডিফল্টরূপে) নোংরা সমস্ত টেম্পলেট বাইন্ডিং পরীক্ষা করে। যখন এইগুলির মধ্যে যে কোনও পরিবর্তন হয়, কৌণিক DOM আপডেট করবে। আপনি যা দেখছেন তা সেটাই।
  • mapsকম্পোনেন্ট সম্ভবত তার তার টেম্পলেটে কোনও বাইন্ডিং নেই lapsDataইনপুট সম্পত্তি, ডান? যে পার্থক্য ব্যাখ্যা করবে।

নোট করুন যে lapsDataউভয় উপাদান এবং rawLapsDataপিতামণ্ডলের উপাদানগুলিতে সমস্ত একই / এক অ্যারে নির্দেশ করে। সুতরাং যদিও কৌণিকর lapsDataইনপুট বৈশিষ্ট্যে কোনও (রেফারেন্স) পরিবর্তন লক্ষ্য করে না , তবুও উপাদানগুলি "পান" / দেখায় যে কোনও অ্যারের সামগ্রী পরিবর্তন হয় কারণ তারা সমস্ত ভাগ করে / রেফারেন্স করে যে একটি অ্যারে থাকে। আমাদের এই পরিবর্তনগুলি প্রচার করার জন্য কৌণিকের দরকার নেই, যেমন আমরা একটি আদিম ধরণের (স্ট্রিং, সংখ্যা, বুলিয়ান) চাই। তবে আদিম ধরণের সাহায্যে, মানটির যে কোনও পরিবর্তন সর্বদা ট্রিগার করবে ngOnChanges()- যা আপনার উত্তর / সমাধানে আপনি কাজে লাগান।

আপনি সম্ভবত আবিষ্কার করেছেন যে অবজেক্ট ইনপুট বৈশিষ্ট্যের অ্যারে ইনপুট বৈশিষ্ট্যগুলির মতো একই আচরণ রয়েছে।


হ্যাঁ, আমি গভীরভাবে নেস্টেড বস্তুকে পরিবর্তন করছি এবং আমি অনুমান করি যে কাঠামোর পরিবর্তনগুলি অ্যাঙ্গুলারের পক্ষে করা শক্ত হয়ে পড়ে। মিউটেটের প্রতি আমার পছন্দ নয় তবে এটি এক্সএমএল অনুবাদ করা হয়েছে এবং আমি শেষের দিকে আবার এক্সএমএলটি পুনরায় তৈরি করতে চাই বলে আশেপাশের কোনও তথ্য হারাতে পারি না
সাইমন এইচ

7
@ সিমোনএইচ, "কাঠামোর পরিবর্তনগুলিতে কৌণিকের পক্ষে পরিবর্তন হওয়া শক্ত" - কেবল পরিষ্কার হতে হবে, কৌণিক এমনকি ইনপুট বৈশিষ্ট্যগুলির মধ্যেও তাকাবে না যা পরিবর্তনের জন্য অ্যারে বা অবজেক্ট রয়েছে। এটি কেবল দেখায় যে মানটি পরিবর্তন হয়েছে কিনা - অবজেক্ট এবং অ্যারেগুলির জন্য, মানটিই রেফারেন্স। আদিম ধরণের জন্য, মানটি ... মান। (আমি নিশ্চিত না যে আমার কাছে সমস্ত
জার্গুলি

11
দুর্দান্ত উত্তর। অ্যাঙ্গুলার 2 টিমকে পরিবর্তন সনাক্তকরণের অভ্যন্তরগুলির বিষয়ে একটি বিশদ, অনুমোদনের ডকুমেন্ট প্রকাশের প্রয়োজন।

যদি আমি doCheck এ কার্যকারিতাটি করি তবে আমার ক্ষেত্রে ড চেকটি এতবার কল করছে। আপনি আমাকে অন্য কোনও উপায় বলতে পারেন?
মিঃ_পরিফেক্ট

আমাকে এই সমস্যা সমাধানের জন্য @MarkRajcok আপনাকে সাহায্য করবে দয়া করে করতে পারেন stackoverflow.com/questions/50166996/...
Nikson

27

সবচেয়ে পরিষ্কার পদ্ধতির নয়, আপনি প্রতিবার মান পরিবর্তন করার সাথে সাথে কেবলমাত্র বস্তুর ক্লোন করতে পারবেন?

   rawLapsData = Object.assign({}, rawLapsData);

আমি মনে করি আপনার নিজের প্রয়োগের চেয়ে আমি এই পদ্ধতিকেই প্রাধান্য দেব ngDoCheck()তবে সম্ভবত @ গন্তেরজ্যাচবাউরের মতো কেউ চিমিয়ে যেতে পারে।


যদি আপনি নিশ্চিত না হন যে কোনও লক্ষ্যযুক্ত ব্রাউজার <অবজেক্ট.সেসাইন ()> সমর্থন করে, আপনি একটি জসন স্ট্রিংয়ে স্ট্রিংফাই করতে পারেন এবং জসন-এ পার্স করতে পারেন, এটি একটি নতুন অবজেক্টও তৈরি করবে ...
গুট্রাম

1
@ গুট্রাম নাকি পলিফিল?
ডেভিড

12

অ্যারেগুলির ক্ষেত্রে আপনি এটি এটি করতে পারেন:

ইন .tsফাইল (মূল উপাদান) যেখানে আপনি আপনার আপডেট করছি rawLapsDataভালো এটা করতে:

rawLapsData = somevalue; // change detection will not happen

সমাধান:

rawLapsData = {...somevalue}; //change detection will happen

এবং ngOnChangesশিশু উপাদান বলা হবে


10

মার্ক রাজককের দ্বিতীয় সমাধানটির এক্সটেনশন হিসাবে

আপনি যখনই অ্যারের সামগ্রীতে কোনও পরিবর্তন করেন তখনই কাঁচা ল্যাপসডাটাতে একটি নতুন অ্যারে বরাদ্দ করুন। তারপরে ngOnChanges () বলা হবে কারণ অ্যারে (রেফারেন্স) পরিবর্তন হিসাবে উপস্থিত হবে

আপনি এইভাবে অ্যারের সামগ্রীগুলি ক্লোন করতে পারেন:

rawLapsData = rawLapsData.slice(0);

আমি এটি উল্লেখ করছি কারণ

RawLapsData = Object.assign ({}, RawLapsData);

আমার জন্য কাজ করেনি। আশা করি এটা কাজে লাগবে.


8

যদি কোনও বাহ্যিক লাইব্রেরি থেকে ডেটা আসে তবে আপনার মধ্যে ডেটা আপেট স্টেটমেন্ট চালানো দরকার zone.run(...)। এর zone: NgZoneজন্য ইনজেক্ট করুন । আপনি যদি zone.run()ইতিমধ্যে বাহ্যিক লাইব্রেরির ইনস্ট্যান্টেশন চালাতে পারেন তবে আপনার zone.run()পরে প্রয়োজন হবে না ।


ওপিকে দেওয়া মন্তব্যে যেমন উল্লেখ করা হয়েছে, পরিবর্তনগুলি বাহ্যিক নয় তবে একটি জসন বস্তুর মধ্যে গভীর ছিল
সাইমন এইচ

1
যেমন আপনার উত্তরটি বলেছে, তবুও আমাদের Angular2 এ জিনিস সিঙ্কে রাখার জন্য কিছু চালানো দরকার, এটি কৌনিক1 এর মতো ছিল $scope.$apply?
পঙ্কজ পার্কার

1
যদি কৌণিক বাহিরের বাইরে থেকে কিছু শুরু করা হয়, জোন দ্বারা প্যাচ করা এপিআই ব্যবহৃত হয় না এবং অ্যাঙ্গুলার সম্ভাব্য পরিবর্তনগুলি সম্পর্কে অবহিত হয় না। হ্যাঁ, zone.runঅনুরূপ $scope.apply
গন্টার জ্যাচবাউর 20

6

ChangeDetectorRef.detectChanges()যখন আপনি কোনও নেস্টেড বস্তু সম্পাদনা করেন (তখন এটি তার নোংরা চেকিংয়ের সাথে মিস হয়) পরিবর্তন পরিবর্তন সনাক্ত করতে কৌনিকটি বলার জন্য ব্যবহার করুন ।


কিন্তু কিভাবে ? আমি এটি ব্যবহারের চেষ্টা করছি, পিতা-মাতার 2 উপায় সীমিতভাবে [(সংগ্রহ)] এর মাধ্যমে নতুন আইটেমটি চাপ দেওয়ার পরে আমি কোনও সন্তানের মধ্যে পরিবর্তন সনাক্তকরণের সূচনা করতে চাই।
Deunz

সমস্যাটি এমন নয় যে পরিবর্তন সনাক্তকরণ ঘটে না, তবে সেই পরিবর্তন সনাক্তকরণের ফলে পরিবর্তনগুলি সনাক্ত করা যায় না! সুতরাং এটি একটি সমাধান বলে মনে হয় না! কেন এই উত্তর পাঁচটি আপত্তি পেয়েছে?
শাহরিয়ার সালজুফি

5

আপনার সমস্যাটি সমাধান করার জন্য আমার কাছে 2 টি সমাধান রয়েছে

  1. ডেটা পরিবর্তন ngDoCheckহয়েছে কিনা তা সনাক্ত করতে ব্যবহার করুনobject
  2. প্যারেন্ট উপাদান থেকে objectএকটি নতুন মেমরি ঠিকানাকে বরাদ্দ করুন object = Object.create(object)

2
অবজেক্ট.সেসাইন ({}, অবজেক্ট) বনাম অবজেক্ট.ক্রিয়েট (অবজেক্ট) এর মধ্যে কি কোনও উল্লেখযোগ্য পার্থক্য থাকবে?
ড্যানিয়েল গালারজা

3

আমার 'হ্যাক' সমাধানটি

   <div class="col-sm-5">
        <laps
            [lapsData]="rawLapsData"
            [selectedTps]="selectedTps"
            (lapsHandler)="lapsHandler($event)">
        </laps>
    </div>
    <map
        [lapsData]="rawLapsData"
        [selectedTps]="selectedTps"   // <--------
        class="col-sm-7">
    </map>

সিলেক্টড টিপস একই সাথে কাঁচা ল্যাপসডাটা পরিবর্তিত হয় এবং এটি ম্যাপকে একটি সহজ অবজেক্ট আদিম ধরণের মাধ্যমে পরিবর্তন সনাক্ত করার জন্য আরও একটি সুযোগ দেয় । এটি মার্জিত নয়, তবে এটি কার্যকর হয়।


টেমপ্লেট সিনট্যাক্সের বিভিন্ন উপাদানগুলিতে, বিশেষত মধ্য / বড় আকারের অ্যাপ্লিকেশনগুলিতে সমস্ত পরিবর্তনগুলি ট্র্যাক করা আমার পক্ষে কঠিন find সাধারণত আমি ডেটা (দ্রুত সমাধান) পাস করার জন্য শেয়ারড ইভেন্ট ইমিটার এবং সাবস্ক্রিপশন ব্যবহার করি, বা এর জন্য রেডাক্স প্যাটার্ন (আরএক্স.সুবজেক্টের মাধ্যমে) প্রয়োগ করি (যখন পরিকল্পনা করার সময় আছে) ...
সাসেক্সা

3

আপনি যখন কোনও বস্তুর সম্পত্তি (নেস্টেড অবজেক্ট সহ) পরিবর্তন করেন তখন পরিবর্তন সনাক্তকরণ ট্রিগার হয় না। একটি সমাধান হ'ল 'লোডাশ' ক্লোন () ফাংশনটি ব্যবহার করে একটি নতুন অবজেক্ট রেফারেন্সকে পুনরায় নিয়োগ করা।

import * as _ from 'lodash';

this.foo = _.clone(this.foo);

2

এখানে একটি হ্যাক যা আমাকে এই একটি দিয়ে ঝামেলা থেকে মুক্তি দিয়েছে।

ওপিতে অনুরূপ দৃশ্য - আমি একটি নেস্টেড কৌণিক উপাদান পেয়েছি যার জন্য এটিতে ডেটা প্রবাহিত হওয়া দরকার, তবে ইনপুটটি একটি অ্যারের দিকে নির্দেশ করে এবং উপরে উল্লিখিত হিসাবে, কৌণিক কোনও পরিবর্তন দেখতে পায় না কারণ এটি পরীক্ষা করে না অ্যারের বিষয়বস্তু।

সুতরাং এটিকে ঠিক করতে আমি অ্যারেটিকে একটি পরিবর্তন সনাক্ত করতে অ্যাংুলারের জন্য একটি স্ট্রিতে রূপান্তর করি এবং তারপরে নেস্টেড উপাদানটিতে আমি (',') স্ট্রিংটিকে আবার অ্যারে এবং তার সুখী দিনগুলিতে ভাগ করে ফেলি।


1
ইশ! অ্যারে.স্লাইস (0) পদ্ধতিটি অনেক পরিষ্কার।
ক্রিস হেইনেস

2

আমি একই প্রয়োজনে হোঁচট খেয়েছি। এবং আমি এই বিষয়ে অনেক পড়েছি, এখানে এই বিষয়টিতে আমার তামা রয়েছে।

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

ইতিমধ্যে যেমনটি বলা হয়েছে, চেঞ্জডেস্ট্রেশনস্ট্রেজি.অন পুশ ব্যবহার করুন

বলুন যে আপনি এই উপাদানটি তৈরি করেছেন, চেঞ্জডেস্টেকশনস্ট্রেজি.অনপুষ্প সহ:

<component [collection]="myCollection"></component>

তারপরে আপনি কোনও আইটেমটি চাপ দিন এবং পরিবর্তন সনাক্তকরণটি ট্রিগার করবেন:

myCollection.push(anItem);
refresh();

অথবা আপনি কোনও আইটেম সরিয়ে পরিবর্তন সনাক্তকরণে ট্রিগার করতে পারেন:

myCollection.splice(0,1);
refresh();

অথবা আপনি কোনও আইটেমের জন্য একটি অ্যাট্রিবিট মান পরিবর্তন করতে এবং পরিবর্তন সনাক্তকরণ ট্রিগার করতে পারেন:

myCollection[5].attribute = 'new value';
refresh();

রিফ্রেশ সামগ্রী:

refresh() : void {
    this.myCollection = this.myCollection.slice();
}

স্লাইস পদ্ধতিটি হুবহু একই অ্যারে প্রদান করে, এবং [=] চিহ্নটি এটির জন্য একটি নতুন রেফারেন্স তৈরি করে, প্রতিবার যখনই আপনার প্রয়োজন হবে পরিবর্তন শনাক্তকরণটি ট্রিগার করে। সহজ এবং পাঠযোগ্য :)

শুভেচ্ছা সহ,


2

আমি এখানে উল্লিখিত সমস্ত সমাধান চেষ্টা করেছি, কিন্তু কিছু কারণে ngOnChanges()এখনও আমার পক্ষে আগুন লাগেনি। সুতরাং আমি this.ngOnChanges()পরিষেবাটি কল করার পরে এটি দিয়েছিলাম যা আমার অ্যারেগুলি পুনরায় সংযুক্ত করে এবং এটি কাজ করে .... সঠিক? সম্ভবত না. ঝরঝরে? কোনভাবেই না. কাজ করে? হ্যাঁ!


1

ঠিক আছে তাই এর জন্য আমার সমাধানটি ছিল:

this.arrayWeNeed.DoWhatWeNeedWithThisArray();
const tempArray = [...arrayWeNeed];
this.arrayWeNeed = [];
this.arrayWeNeed = tempArray;

এবং এই ট্রিগার আমাকে এনজিওচেনিজ


0

আমাকে এর জন্য একটি হ্যাক তৈরি করতে হয়েছিল -

I created a Boolean Input variable and toggled it whenever array changed, which triggered change detection in the child component, hence achieving the purpose

0

আমার ক্ষেত্রে এটি অবজেক্ট ভ্যালুতে পরিবর্তন ছিল যা ngOnChangeক্যাপচার করছে না। এপিআই কলের প্রতিক্রিয়াতে কয়েকটি বস্তুর মান পরিবর্তন করা হয়েছে। পুনঃনির্মাণ বস্তুটি সমস্যাটি স্থির করে এবং এর কারণ ঘটেছেngOnChange শিশুর উপাদানটিকে ট্রিগার করতে হয়েছিল।

কিছুটা এইরকম

 this.pagingObj = new Paging(); //This line did the magic
 this.pagingObj.pageNumber = response.PageNumber;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.