আমি জানি আমি এই সম্পর্কে জিজ্ঞাসা করা প্রথম নই, তবে পূর্ববর্তী প্রশ্নগুলির উত্তর খুঁজে পাই না। আমি একটি উপাদান এই আছে
<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(...)
পরে এটি করা উচিত।
ngOnChanges()
হবে না। ngDoCheck()
অ্যারের সামগ্রীগুলি পরিবর্তন হয়েছে কিনা তা নির্ধারণ করতে আপনি নিজের যুক্তি ব্যবহার করতে এবং প্রয়োগ করতে পারেন । lapsData
আপডেট করা হয়েছে কারণ এটির / হিসাবে একই অ্যারেটির একটি রেফারেন্স রয়েছে rawLapsData
।