2017-11-09 155 views
5

okumak ve ben kullanarak bir hizmet oluşturduk açısal-cliEğik 5 Hizmet ben 5 Açısal kullanıyorum yerel .json dosyasını

Ne yapmak istiyorum için yerel json dosyasını okur bir hizmet yaratmaktır 5.

Bu benim ne var açısal ... Ben

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)); 

    } 

} 

Bunu nasıl bitmiş alabilirsiniz ... biraz şaşırıp?

+1

https://angular.io/tutorial/toh-pt6 yılında

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

dosyanızda typings.d.ts bu modül beyan 'HttpClientModule' yapıcıya enjekte edilmemelidir. – Alex

cevap

9

İlk Yeni HttpClient size varsayılan olarak tepki gövdesini verecektir çünkü, nihayet emin olun bunu artık gerek kalmayacak sen .map((res:any) => res.json()) kaldırmak zorunda ikinci şey HttpClient ve değil HttpClientModule, enjekte etmek zorunda sen misin içinde ithalat 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") 
    } 

sizin Bileşeni için bu eklemek için:

@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

"Çözümlenmemiş Tür Gözlemlenebilir" ... "bu satırda" alıyorum "public getJSON(): Gözlemlenebilir {" – pedromartinez

+1

Import 'Gözlenebilir', güncelleştirmeye bakın –

+0

Bir son soru ... Bu verileri nasıl alabilirim? bileşen? – pedromartinez

3

Alternatif bir çözümünüz var, doğrudan json'unuzu içeri aktarıyorsunuz. derlemek için

, Kodunuzla Örneğin

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

console.log(data_json) 
+0

Farz edin ki, jsonum varlıklarımda/abc.json'da ve sadece bir modül app.module.ts kullanarak typing.d.ts içinde nasıl bildirileceğini ve nasıl içe aktarılacağını açıklayacağım. Lütfen yardım et. –

+0

Yalnızca, typing.d.ts dosyanızdaki modülü bildirin. Ve JSON'unuzu sınıfınıza aktarın –

+0

Hangi modül? Uygulamayı kullanarak kullandığımı varsayalım. modülü. ts? –