मैं पार्स करने की कोशिश कर अपने डेटा को फाड़ रहा हूं और लौटाए गए डेटा को JSON क्वेरी / एपि कॉल के रूप में उपयोग करता हूं। मुझे यकीन नहीं है कि जहां मैं गलत हो रहा था, मुझे लगता है कि मैं दिनों के लिए उत्तर का चक्कर लगा रहा हूं, जैसे विभिन्न त्रुटि कोड का पीछा करना:
"ऑब्जेक्ट को समर्थन करने वाली 'iterableDiff' नहीं मिल सकती है"
"जेनेरिक टाइप एरे को एक तर्क की आवश्यकता है"
JSON ने त्रुटियों को पार्स किया, और दूसरों को सुनिश्चित किया
मुझे लगता है मैं सिर्फ फिक्स का गलत संयोजन था।
इसलिए यहाँ गोच और चीज़ों का सारांश देखने लायक है।
सबसे पहले अपने एपीआई कॉल के परिणाम की जांच करें, आपके परिणाम ऑब्जेक्ट, सरणी, या ऑब्जेक्ट की एक सरणी के रूप में हो सकते हैं।
मैं इसे बहुत अधिक में नहीं जाना चाहता, ओपी की मूल त्रुटि कहने के लिए पर्याप्त नहीं होने के कारण यह आमतौर पर एक वस्तु को पुनरावृत्त करने की कोशिश के कारण होता है, न कि एक ऐरे के रूप में।
मेरे कुछ डिबगिंग परिणामों के एरे और ऑब्जेक्ट दोनों के चर दिखाते हैं
तो जैसा कि हम आम तौर पर अपने JSON परिणाम पर पुनरावृति करना चाहते हैं, हमें यह सुनिश्चित करने की आवश्यकता है कि यह एक ऐरे के रूप में हो। मैंने कई उदाहरणों की कोशिश की, और शायद मुझे पता है कि अब मुझे पता है कि उनमें से कुछ वास्तव में काम करेंगे, लेकिन मैं जिस दृष्टिकोण के साथ गया था वह वास्तव में एक पाइप को लागू करने के लिए था और जिस कोड का मैंने इस्तेमाल किया था वह t.888 द्वारा पोस्ट किया गया था
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;
ईमानदारी से मुझे लगता है कि मुझे जो चीजें मिल रही थीं, उनमें से एक त्रुटि से निपटने की कमी थी, 'वापसी अपरिभाषित' कॉल जोड़कर मुझे विश्वास है कि हम अब गैर-अपेक्षित डेटा को पाइप पर भेजने की अनुमति दे रहे हैं, जो स्पष्ट रूप से मेरे मामले में हो रहा था ।
यदि आप पाइप से तर्क से निपटना नहीं चाहते (और देखो मुझे नहीं लगता कि यह ज्यादातर मामलों में आवश्यक है) तो आप निम्नलिखित को वापस कर सकते हैं
if (!obj)
return undefined;
return Object.keys(obj);
आपके पाइप और पृष्ठ या घटक बनाने पर कुछ नोट्स जो उस पाइप का उपयोग करते हैं
क्या मुझे 'name_of_my_pipe' के बारे में त्रुटियाँ प्राप्त हो रही थीं, जो नहीं मिल रही हैं
CLI से I आयनिक उत्पन्न पाइप ’कमांड का उपयोग यह सुनिश्चित करने के लिए करें कि पाइप मॉड्यूलेट बनाए गए हैं और सही ढंग से संदर्भित हैं। सुनिश्चित करें कि आप mypage.module.ts पेज पर निम्नलिखित जोड़ सकते हैं।
import { PipesModule } from ‘…/…/pipes/pipes.module’;
(यह निश्चित नहीं है कि यदि यह परिवर्तन आपके स्वयं के custom_module का है, तो आपको इसे custommodule.module.ts में भी जोड़ना पड़ सकता है)
यदि आपने अपना पेज बनाने के लिए 'आयनिक जनरेट पेज' कमांड का उपयोग किया है, लेकिन उस पेज को अपने मुख्य पृष्ठ के रूप में उपयोग करने का निर्णय लेते हैं, तो app.module.ts (यहां एक और जवाब जो मैंने पोस्ट किया है, उस https से संबंधित पोस्ट को हटाने के लिए याद रखें : / /forum.ionicframework.com/t/solved-pipe-not-found-in-custom-component/95179/13?u=dreaser
मेरे जवाबों की तलाश में जहां html फ़ाइल में डेटा प्रदर्शित करने के कई तरीके हैं, और मुझे मतभेदों को समझाने के लिए पर्याप्त समझ नहीं है। आपको कुछ परिदृश्यों में एक से अधिक का उपयोग करना बेहतर हो सकता है।
<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>
एपीआई कॉल करने के लिए ऐसा लगता है कि आपको HttpModule को app.module.ts में आयात करने की आवश्यकता है
import { HttpModule } from '@angular/http';
.
.
imports: [
BrowserModule,
HttpModule,
और आपको उस पृष्ठ में Http की आवश्यकता है जिससे आप कॉल करते हैं
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'];
(यह निश्चित नहीं है कि उस चर को एक ऐरे स्ट्रिंग होना चाहिए, लेकिन मेरे पास अभी जो है वह है। यह अधिक सामान्य चर के रूप में काम कर सकता है)
और अंतिम नोट, इनबिल्ट JSON लाइब्रेरी का उपयोग करना आवश्यक नहीं था, लेकिन आप इन 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);
मुझे आशा है कि जानकारी का यह संकलन किसी को बाहर निकालने में मदद करता है।