আমি JSON ক্যোয়ারী / এপিআই কল ফর্মিত ডেটা পার্স এবং ব্যবহার করার চেষ্টা করে আমার চুল ছিঁড়ে ফেলছি। আমি ঠিক কোথায় ভুল করছি ঠিক জানি না, আমার মনে হয় আমি কয়েক দিন ধরে উত্তর ঘুরছি, বিভিন্ন ত্রুটি কোডগুলি অনুসরণ করে যেমন:
"'পুনরাবৃত্তিযোগ্য ডিফ' পাইপ সমর্থনকারী অবজেক্টটি খুঁজে পাওয়া যায় না"
"জেনেরিক টাইপ অ্যারের জন্য একটি যুক্তি (গুলি) প্রয়োজন"
JSON ত্রুটিগুলি পার্সিং করছে এবং অন্যরাও নিশ্চিত
আমি ধরে নিচ্ছি আমার ঠিক ঠিক সমাধানের ভুল সংমিশ্রণ ছিল।
সুতরাং এখানে গোচাছা এবং সন্ধান করার বিষয়গুলির সংক্ষিপ্তসারটি দেওয়া হল।
প্রথমে আপনার এপিআই কলগুলির ফলাফলটি পরীক্ষা করুন, আপনার ফলাফল কোনও অবজেক্ট, অ্যারে বা অবজেক্টের অ্যারে আকারে থাকতে পারে।
আমি এটি খুব বেশি goোকাতে চাই না, পর্যাপ্ত পরিমাণে না বলে ওপি'র মূল ত্রুটিটি সাধারণত আপনি কোনও অ্যারে নয়, কোনও বস্তুর পুনরাবৃত্তি করার চেষ্টা করার কারণে ঘটে।
আমার কিছু ডিবাগিং ফলাফলগুলি অ্যারে এবং অবজেক্ট উভয়ের ভেরিয়েবল দেখায় showing
সুতরাং আমরা সাধারণত আমাদের JSON ফলাফলের উপর পুনরাবৃত্তি করতে চাই আমাদের এটি নিশ্চিত করা দরকার যে এটি অ্যারের আকারে রয়েছে। আমি অসংখ্য উদাহরণ চেষ্টা করেছিলাম, এবং সম্ভবত আমি এখন যা জানি তা জেনে কিছু সত্যই কাজ করবে তবে আমি যে পদ্ধতির সাথে চলেছি তা ছিল একটি পাইপ এবং আমি যে কোডটি ব্যবহার করছিলাম তা হ'ল টি ৮৮৮ পোস্ট করেছে
transform(obj: {[key: string]: any}, arg: string) {
if (!obj)
return undefined;
return arg === 'keyval' ?
Object.keys(obj).map((key) => ({ 'key': key, 'value': obj[key] })) :
arg === 'key' ?
Object.keys(obj) :
arg === 'value' ?
Object.keys(obj).map(key => obj[key]) :
null;
সত্যই আমি মনে করি যে জিনিসগুলির মধ্যে একটি আমার কাছে ছিল তা হ'ল ত্রুটি পরিচালনার অভাব, 'রিটার্ন অপরিজ্ঞাত' কল যোগ করে আমি বিশ্বাস করি যে আমরা এখন পাইপটিতে অপ্রত্যাশিত ডেটা প্রেরণের অনুমতি দিচ্ছি যা স্পষ্টতই আমার ক্ষেত্রে ঘটছিল which ।
আপনি যদি পাইপের সাথে যুক্তি মোকাবেলা করতে না চান (এবং দেখতে বেশিরভাগ ক্ষেত্রে আমার এটি প্রয়োজন মনে হয় না) আপনি কেবল নিম্নলিখিতটি ফিরিয়ে দিতে পারেন
if (!obj)
return undefined;
return Object.keys(obj);
আপনার পাইপ এবং পৃষ্ঠা বা উপাদানটি তৈরি করতে কিছু নোট যা সেই পাইপটি ব্যবহার করে
আমি কি 'name_of_my_pipe' পাওয়া যায়নি সে সম্পর্কে ত্রুটি পেয়েছি
পাইপ মডিউল.টিগুলি সঠিকভাবে তৈরি করা হয়েছে এবং সঠিকভাবে রেফারেন্স করা হয়েছে তা নিশ্চিত করতে CLI থেকে 'আয়নিক জেনারেট পাইপ' কমান্ডটি ব্যবহার করুন। নিশ্চিত করে নিন যে আপনি নিম্নলিখিতটি মাইপেজ.মডিউল.টি পৃষ্ঠায় যুক্ত করেছেন।
import { PipesModule } from ‘…/…/pipes/pipes.module’;
(আপনার নিজের নিজস্ব কাস্টম_মডিউল থাকলেও এটি পরিবর্তন হয় কিনা তা নিশ্চিত নন, আপনাকে এটি কাস্টমমডিউল.মডিউল.টসে যোগ করার প্রয়োজনও হতে পারে)
আপনি যদি নিজের পৃষ্ঠাটি তৈরি করতে 'আয়নিক উত্পন্ন পৃষ্ঠা' কমান্ডটি ব্যবহার করেন তবে সেই পৃষ্ঠাটিকে আপনার প্রধান পৃষ্ঠা হিসাবে ব্যবহার করার সিদ্ধান্ত নিয়ে থাকেন তবে অ্যাপ্লিকেশন: Module.ts থেকে পৃষ্ঠা রেফারেন্সটি সরিয়ে ফেলার কথা মনে রাখবেন (আমি এর সাথে লেনদেন করা অন্য উত্তরটি এখানে দেওয়া হয়েছে) https: /forum.ionicframework.com/t/solved-pipe-not-found-in-custom-component/95179/13?u=dreaser
আমার উত্তরগুলির সন্ধানে যেখানে এইচটিএমএল ফাইলটিতে ডেটা প্রদর্শন করার জন্য বেশ কয়েকটি উপায় রয়েছে এবং আমি পার্থক্য ব্যাখ্যা করার জন্য যথেষ্ট বুঝতে পারি না। নির্দিষ্ট পরিস্থিতিতে আপনি একে অপরের উপর ব্যবহার করা ভাল বলে মনে করতে পারেন।
<ion-item *ngFor="let myPost of posts">
<img src="https://somwhereOnTheInternet/{{myPost.ImageUrl}}"/>
<img src="https://somwhereOnTheInternet/{{posts[myPost].ImageUrl}}"/>
<img [src]="'https://somwhereOnTheInternet/' + myPost.ImageUrl" />
</ion-item>
তবে কী এমন কাজ করেছিল যা আমাকে মূল্য এবং কী উভয়ই প্রদর্শন করতে দেয়:
<ion-list>
<ion-item *ngFor="let myPost of posts | name_of_pip:'optional_Str_Varible'">
<h2>Key Value = {{posts[myPost]}}
<h2>Key Name = {{myPost}} </h2>
</ion-item>
</ion-list>
এপিআই কল করার জন্য দেখে মনে হচ্ছে আপনার অ্যাপ.মডিউল.টিসে এইচটিপিএমডুলি আমদানি করা দরকার
import { HttpModule } from '@angular/http';
.
.
imports: [
BrowserModule,
HttpModule,
এবং আপনি যে পৃষ্ঠা থেকে কল করছেন তাতে আপনার এইচটিটিপি দরকার
import {Http} from '@angular/http';
এপিআই কল করার সময় আপনি মনে করেন যে শিশুদের ডেটা (অ্যারের মধ্যে থাকা অবজেক্টস বা অ্যারে) 2 টি বিভিন্ন উপায়ে পেতে সক্ষম হবেন, হয় কাজ করছে বলে মনে হচ্ছে
হয় কল করার সময়
this.http.get('https://SomeWebsiteWithAPI').map(res => res.json().anyChildren.OrSubChildren).subscribe(
myData => {
অথবা আপনি যখন আপনার স্থানীয় ভেরিয়েবলের ডেটা বরাদ্দ করেন
posts: Array<String>;
this.posts = myData['anyChildren'];
(নিশ্চিত না যে সেই ভেরিয়েবলটি অ্যারে স্ট্রিং হওয়া দরকার কিনা, তবে আমার কাছে এটি বর্তমানে যা আছে তা তা স্থগিত করে It এটি আরও জেনেরিক ভেরিয়েবল হিসাবে কাজ করতে পারে)
এবং চূড়ান্ত দ্রষ্টব্য, ইনবিল্ট জেএসওন লাইব্রেরিটি ব্যবহার করার প্রয়োজন ছিল না তবে আপনি কোনও 2 টি কলকে কোনও বস্তু থেকে স্ট্রিং এবং তার বিপরীতে রূপান্তর করার জন্য কার্যকর ব্যবহার করতে পারেন
var stringifiedData = JSON.stringify(this.movies);
console.log("**mResults in Stringify");
console.log(stringifiedData);
var mResults = JSON.parse(<string>stringifiedData);
console.log("**mResults in a JSON");
console.log(mResults);
আমি আশা করি তথ্যের সংকলনটি কাউকে সাহায্য করবে।