Fra*_*ría 8 javascript typescript angular2-services angular
我在 Angular 2 中遇到问题,我知道这是一个反复出现的问题,但我找不到解决方案。我创建了一个从另一个组件调用的服务,没有问题。
问题出在服务中,我正在尝试进行 http POST 并获取错误:
[异常:TypeError:“caller”、“callee”和“arguments”属性可能无法在严格模式函数或 Function.remoteFunction 调用的参数对象上访问**
显然,错误是在handleErrorObservable中给出的,因为post也没有执行,查看Chrome中的网络选项卡,我没有看到任何对API的POST调用。
这是我的服务代码。
import { Injectable } from '@angular/core';
import { Http, Response, RequestOptions } from '@angular/http';
import { Observable } from "rxjs/Observable";
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/map';
import { User } from "./user";
import { HttpHeaders } from '@angular/common/http';
import { Headers } from '@angular/http';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/toPromise';
@Injectable()
export class RegisterService {
usersUrl: 'http://localhost:8080/TrabajoPromocion/users/';
constructor(private http:Http) { }
addBookWithObservable( ): Observable<User> {
let body = JSON.stringify({
"fullname": "a",
"username": "h",
"password": "3",
"email": "33"
});
let headers = new Headers({ 'Content-Type': 'application/json' });
console.log('3');
let options = new RequestOptions({ headers: headers });
return this.http.post(this.usersUrl, body, options)
.map(this.extractData)
.catch(this.handleErrorObservable);
}
private extractData(res: Response) {
let body = res.json();
return body || {};
}
private handleErrorObservable (error: Response | any) {
console.error(error.message || error);
return Observable.throw(error.message || error);
}
}
Run Code Online (Sandbox Code Playgroud)
感谢大家,欢迎任何帮助。
根据我所看到的,我可以假设您的请求未发送的原因是您没有调用可.subscribe观察到的任何地方。Observables 只是函数,在您调用它们之前它们不会被执行。这就是 subscribe 的作用 - 调用函数,然后所有运算符也被执行。
您在开发人员工具中看到的并不是请求中的实际错误,而是向您发送的消息,表明您无法在开发人员工具中查看函数的参数或调用者或被调用者。
因此,解决方案是简单地添加subscribe调用(或者异步管道也可以完成这项工作)。
| 归档时间: |
|
| 查看次数: |
15679 次 |
| 最近记录: |