2017-11-09 25 views
5

पढ़ने के लिए मैं कोणीय 5 का उपयोग कर रहा हूँ और मैं एक सेवा बना लिया है का उपयोग कर कोणीय CLIकोणीय 5 सेवा स्थानीय .json फ़ाइल

मुझे क्या करना चाहते हैं एक सेवा है जो के लिए एक स्थानीय json फ़ाइल पढ़ता है बनाने के लिए है कोणीय 5.

यह है कि मैं क्या है ... मैं थोड़ा अटक हूँ ...

import { Injectable } from '@angular/core'; 
import { HttpClientModule } from '@angular/common/http'; 

@Injectable() 
export class AppSettingsService { 

    constructor(private http: HttpClientModule) { 
    var obj; 
    this.getJSON().subscribe(data => obj=data, error => console.log(error)); 
    } 

    public getJSON(): Observable<any> { 
    return this.http.get("./assets/mydata.json") 
     .map((res:any) => res.json()) 
     .catch((error:any) => console.log(error)); 

    } 

} 

मैं इस समाप्त मिल सकता है?

+1

https://angular.io/tutorial/toh-pt6 में अपने typings.d.ts में इस मॉड्यूल का ऐलान करते हैं 'HttpClientModule' को कन्स्ट्रक्टर में इंजेक्शन नहीं दिया जाना चाहिए। – Alex

उत्तर

9

सबसे पहले आप क्योंकि नई HttpClient आप डिफ़ॉल्ट रूप से प्रतिक्रिया के शरीर दे देंगे, अंत में यह सुनिश्चित कर लें HttpClient और नहीं HttpClientModule, दूसरी बात आप .map((res:any) => res.json()) हटाने के लिए आप इसे किसी भी अधिक की जरूरत नहीं होगी इंजेक्षन करने के लिए है कि आप आप में आयात HttpClientModuleAppModule :

import { HttpClient } from '@angular/common/http'; 
import { Observable } from 'rxjs/Observable'; 

    constructor(private http: HttpClient) { 
     this.getJSON().subscribe(data => { 
      console.log(data) 
     }); 
    } 

    public getJSON(): Observable<any> { 
     return this.http.get("./assets/mydata.json") 
    } 

अपने घटक में जोड़ने के लिए:

@Component({ 
    selector: 'mycmp', 
    templateUrl: 'my.component.html', 
    styleUrls: ['my.component.css'] 
}) 
export class MyComponent implements OnInit { 
    constructor(
     private appSettingsService : AppSettingsService 
    ) { } 

    ngOnInit(){ 
     this.appSettingsService.getJSON().subscribe(data => { 
      console.log(data) 
     }); 
    } 
} 
+0

मुझे "अनसुलझा प्रकार अवलोकन योग्य" मिल रहा है ... इस लाइन पर "सार्वजनिक getJSON(): अवलोकन योग्य {" – pedromartinez

+1

आयात 'अवलोकन', अद्यतन –

+0

एक अंतिम प्रश्न देखें ... मैं अपने डेटा से यह डेटा कैसे कर सकता हूं घटक? – pedromartinez

3

आपके पास एक वैकल्पिक समाधान है, जो सीधे आपके जेसन आयात कर रहा है।

संकलन करने के लिए, फ़ाइल

declare module "*.json" { 
    const value: any; 
    export default value; 
} 

अपने कोड

import { data_json } from '../../path_of_your.json'; 

console.log(data_json) 
उदाहरण के लिए
+0

मान लीजिए, मेरे पास मेरी जेसन संपत्ति/abc.json में है, और केवल एक मॉड्यूल app.module.ts का उपयोग करके टाइपिंग.d.ts में कैसे घोषणा करें और कैसे आयात करें। कृपया मदद करे। –

+0

बस अपनी typing.d.ts फ़ाइल में मॉड्यूल घोषित करें। और अपने JSON को अपनी कक्षा –

+0

में कौन सा मॉड्यूल आयात करें? मान लीजिए कि मैं इसे ऐप में उपयोग कर रहा हूं। मॉड्यूल। ts? –

संबंधित मुद्दे