Angular 2 Exception: TypeError: 'caller', 'callee', and 'arguments' properties may on strict mode functions or the arguments objects

Angular 2 Exception: TypeError: 'caller', 'callee', and 'arguments' properties may on strict mode functions or the arguments objects

我在 Angular 2 中遇到问题,我知道这是一个反复出现的问题,但我找不到解决方案。我做了一个从另一个组件调用的服务,没有问题。 问题出在服务中,我正在尝试制作一个 http POST 并获取和错误: [异常:TypeError:'caller'、'callee' 和 'arguments' 属性可能无法在严格模式函数或在 [=30= 调用它们的参数对象上访问] error capture complete error capture

显然错误是在 handleErrorObservable 中给出的,因为 post 也没有执行,查看 Chrome 中的网络选项卡我没有看到任何 POST 调用 api。 这是我的服务代码。

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

感谢大家,欢迎任何帮助。

根据我所见,我可以假设您的请求未被发送的原因是您没有在您可观察到的任何地方调用 .subscribe。 Observables 只是函数,在你调用它们之前它们不会被执行。这就是 subscribe 所做的 - 调用函数,然后也执行所有运算符。

您在开发者工具中看到的并不是请求中的实际错误,而是您无法在开发者工具中查看函数的参数或调用者或被调用者的消息。

所以解决方案是简单地添加 subscribe 调用(或者异步管道也可以完成这项工作)。