मैं कोणीय 2 और आरएक्सजे दोनों के लिए नया हूं और मैं किसी विशेष मामले के बारे में थोड़ा उलझन में हूं।जब कोई एपीआई लिखा नहीं जाता है तो एंगुलर 2 में एक http को देखे जा सकते हैं
मैं एक साधारण सेवा है:
import { Injectable } from '@angular/core';
import { Observable, Subject } from 'rxjs/Rx';
import { Http, Response } from '@angular/http';
export interface Article {
id: number;
title: string;
content: string;
author: string;
}
@Injectable()
export class ArticleService {
private _articles$: Subject<Article[]>;
private baseUrl: string;
private dataStore: {
articles: Article[]
};
constructor(private http: Http) {
this.baseUrl = 'http://localhost:3000'
this.dataStore = { articles: [] };
this._articles$ = <Subject<Article[]>>new Subject();
}
get articles$(){
return this._articles$.asObservable();
}
loadAll(){
//Observable.from(this.dummyData)
this.http.get(`${this.baseUrl}/articles`)
.map(response => response.json())
.subscribe(data => {
//debugger;
this.dataStore.articles = data;
// Push a new copy of our article list to all Subscribers.
this._articles$.next(this.dataStore.articles)
}, error => console.log('Could not load Articles'));
}
}
और यह अपेक्षा के अनुरूप काम करता है, लेकिन मुझे क्या करना चाहते हैं एक एपीआई endpoint के बिना मेरी सेवा को विकसित करने में सक्षम हो और एक नमूदार है कि मैं बाद में कर सकते हैं का उपयोग कर http.request
के लिए स्वैप आउट करें। मैं Observable.from का उपयोग कर एक नमूदार को एक डमी डेटा सरणी परिवर्तित करने के लिए ऐसा करने की कोशिश की लेकिन मैं त्रुटियों मिल
Type '{ id: number; title: string; content: string; author: string; }' is not assignable to type 'Article[]'
मेरा मानना है कि इस वजह से इसे अलग से करने के बजाय प्रत्येक आइटम लौटा रहा है सरणी, किसी को कैसे की सही दिशा में मुझे इंगित कर सकते हैं इस काम करना चाहिए
अद्यतन:
: स्पष्टता के लिए dummyData की तरह लग रहेprivate dummyData = [
{
id: 1,
title: 'Title 1',
content: 'content 1',
author: 'author 1'
},
{
id:2,
title: 'Title 2',
content: 'content 2',
author: 'author 1'
}
];
मुझे यकीन है कि कार्यान्वयन आप देख रहे हैं नहीं कर रहा हूँ , लेकिन loadAll() शायद बस हो सकता है loadAll() {this._article $ .next ([आलेख, आलेख]); } – JacobS
@JacobS इसलिए मैं https://coryrylan.com/blog/angular-2-observable-data-services के साथ पीछा कर रहा था और उसके पास एक एपीआई है, मैं बस यह समझने की कोशिश कर रहा था कि मैं http अनुरोध से कैसे बच सकता हूं लेकिन एक अवलोकनयोग्य का उपयोग करके विकास जारी रखें जहां मैं केवल 'this.http.get (' $ {this.baseUrl}/articles ') में उप-उप- – jonnie
के साथ उप-उप-उपरोक्त में सदस्यता ले सकता हूं। आप किसी भी तरह से देखने योग्य की सदस्यता लेंगे। यह ध्यान नहीं देगा कि डेटा को देखने योग्य में कैसे धक्का दिया जाता है। यह एक साफ स्वैप होना चाहिए। यदि आप 'this.http' कॉल को बरकरार रखना चाहते हैं तो मैं इन-मेमोरी-एपीआई -https: //www.npmjs.com/package/angular2-in-memory-web-api – JacobS