Angular2 / Fehler: Auflistung nicht gefunden
Ich bin ganz neu Angular2 und versuchte, eine Todo-app.
Hier ist meine Datei-Struktur:
Meine todo.service.ts code (in gemeinsamen Ordner)
import { Injectable } from '@angular/core';
import { Http, Headers } from '@angular/http';
import 'rxjs/add/operator/toPromise';
import { ITodo } from './todo.model';
@Injectable()
export class TodoService {
constructor(private http: Http){}
getTodos(): Promise<ITodo[]> {
return this.http.get('api/todos')
.toPromise()
.then(res => res.json().data)
.catch(this.handleError);
}
addTodo(todo: ITodo): Promise<ITodo> {
return this.post(todo);
}
deleteTodo(todo: ITodo): Promise<ITodo> {
return this.delete(todo);
}
private post(todo: ITodo): Promise<ITodo> {
let headers = new Headers({
'Content-Type': 'application/json'
});
return this.http.post('api/todos', JSON.stringify(todo), { headers })
.toPromise()
.then(res => res.json().data)
.catch(this.handleError)
}
private delete(todo: ITodo): Promise<ITodo> {
let headers = new Headers({
'Content-Type': 'application/json'
});
let url = `api/todos/${todo.id}`;
return this.http.delete(url, { headers })
.toPromise()
.then(res => todo)
.catch(this.handleError)
}
private handleError(error: any): Promise<any> {
console.log('The error occured >>>', error);
return Promise.reject(error.message || error);
}
}
Meine main.ts code
import { bootstrap } from '@angular/platform-browser-dynamic';
import { HTTP_PROVIDERS, XHRBackend } from '@angular/http';
import { InMemoryBackendService, SEED_DATA } from 'angular2-in-memory- web-api';
import { TodoSeedData } from './shared/todo.data';
import {AppComponent} from './app.component';
bootstrap(AppComponent,[
HTTP_PROVIDERS,
{ provide: XHRBackend, useClass: InMemoryBackendService },
{ provide: SEED_DATA, useClass: TodoSeedData },
]);
Alles hatte funktioniert ohne Fehler, bis ich brauchte, http.
Gefunden Art ähnliches problem hier
aber es funktioniert nicht für mich.
Konsole.Protokoll zeigt Fehler: Sammlung 'todos' wurde nicht gefunden.
Ich denke, es ist ein Problem mit der http.
Bitte helfen Sie.
- Das sieht aus wie ein Problem mit Ihrer Anfrage bekommen. Ich würde setzen Sie einen Haltepunkt auf
return this.http.get('api/todos')
. Hit F11, um Schritt in der Funktion. Und dann prüfenurl
dieser Funktion.Http.prototype.get = function (url, options) { };
Stellen Sie sicher, dass die url ist, was Sie denken es sein sollte. Wenn Sie bewerten Sie in der Verwaltungskonsole, und klicken Sie auf den link, es sollte sich öffnen in einem neuen tab mit der json-Objekt, das Sie erwarten. - Haben Sie jemals herausfinden? Ich habe ein ähnliches Problem mit einem WebAPI Aufruf - URL korrekt ist, aber es gibt die gleiche Fehlermeldung
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte ein ähnliches Problem, ruft mein WebAPI. Am Ende musste ich auskommentieren der InMemoryDataService - sobald ich dies getan habe dann ist der Fehler ging Weg und ich war in der Lage zu treffen meine WebAPI:
AngularJS 2 : Daten aus json-Datei nicht funktioniert
Dies scheint ein Problem bei der Verwendung der InMemoryDataService für die InMemoryWebApi (zu verhöhnen, Ihre eigentliche back-end-api) und nicht mit der Angular2 Http. Sie können dies überprüfen, indem Sie die im Speicher der web-api in Ihre app.- Modul.ts und sehen, ob die http-Aufrufe dann erfolgreich treffen Sie Ihre API.
Den createDb () - Methode in Ihrer InMemoryBackendService sollte in etwa so Aussehen, damit es funktioniert.
Ersetzen mit Ihren mock-Daten-Objekte.
Finden Sie in der Dokumentation für in-memory-web-api - hier
Hatte ich auch das gleiche propblem hatte ich auskommentiert, die
InMemoryWebApiModule.forRoot(InMemoryDataService)
in meinem Modul und seine arbeiten gut für michDies kann helfen, einige Leute, die finden sich hier. Es ist eine Konfigurations-option zu Durchlaufen, um eine live-server, wenn die Sammlung nicht konfiguriert ist:
sehen https://github.com/angular/in-memory-web-api#pass-thru-to-a-live-server