Angular – http

  Angular

W app.module.ts zaimportuj moduł http:

import { HttpClientModule } from '@angular/common/http';
@NgModule({
 declarations: [
AppComponent,
routingComponents
 ],
 imports: [
    BrowserModule,
    AppRoutingModule,
    HttpClientModule
 ],
 providers: [PageService],
 bootstrap: [AppComponent]
})

następnie w serwisie wstrzyknij zależność i zaimportuj HttpClient oraz utwórz plik .json z danymi i podepnij ten plik do metody http.get()

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

uwaga: domyślnie pobiera HttpClient z innej lokalizacji. Ścieżka musi być właśnie taka, jak powyżej

export class PageService {

    private _url = '/assets/data/pages.json';

    constructor(private http: HttpClient) { }   

    getContent() {
        return this.http.get(this._url);
    }

}

Następnie tworzymy interface, żeby być pewnym, że przyjmujemy właściwe dane. Np w nowym katalogu tworzymy plik nazwaInterface.ts a w nim:

export interface IPage {
    id: number;
    title: string;
    content: string;
}

zatem w serwisie metoda do pobrania zawartości musi się nieco zmienić:

getContent(): Observable<IPage[]> {
    return this.http.get<IPage[]>(this._url);
}

Następnie w componencie, w którym chcemy pobierać dane z observera musimy dodać opcję subscribe do metody z serwisu, która zwraca obiekt typu observer

export class PagesListComponent implements OnInit {

    public pages;
    constructor(private _pageList: PageService) { }

    ngOnInit() {
        this._pageList.getContent()
            .subscribe(data => this.pages = data);
    }

}