Pac*_*iel 4 javascript angular-services angular
我正在尝试创建一个处理Angular 2中的联系人的服务.这是我到目前为止所做的.
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/toPromise';
@Injectable()
export class ContactsService {
  constructor(private http: Http) { }
  addContact(contact): Promise<any> {
    return this.http
      .post('http://localhost:8000/contacts', contact)
      .toPromise()
      .then(response => response.json())
      .catch(error => error.json());
  }
}
现在服务工作正常,如果我400+在响应上获得状态代码,代码就会catch凝视,如果200代码进入then状态并返回响应.
但是当我在一个组件中使用它时,then无论是否正常,它都会进入状态.
addingContact() {
  this.contactsService
    .addContact(this.user)
    .then(
      (contactx) => { console.log('THEN = ' + JSON.stringify(contactx)); },
      (err) => { console.log('CATCH = ' + JSON.stringify(err)); }
    );
}
有什么我缺少的,我应该在服务上扔东西,所以代码进入错误开始,我得到一个400+状态代码?
谢谢你,丹尼尔!
你吞下了catch中的错误,你仍然可以有一个catch子句来转换错误,但你需要从它返回一个被拒绝的Promise.像这样的东西:
  let httpPromiseMock  = new Promise((resolve, reject)=> {
    reject('400 error');
  });
 httpPromiseMock
 .then(x=> {console.log(x); return x*2;})
 .catch(x=> Promise.reject(`my error is ${x}`))
 .then(x=>console.log('good',x), 
    err=>console.log('bad', err));