编程语言
首页 > 编程语言> > javascript-Angular 2异常:TypeError:严格模式函数或arguments对象上的’caller’,’callee’和’arguments’属性可能

javascript-Angular 2异常:TypeError:严格模式函数或arguments对象上的’caller’,’callee’和’arguments’属性可能

作者:互联网

我在Angular 2中遇到问题,我知道这是一个经常发生的问题,但是我找不到解决方法.我做了一个从另一个组件调用的服务,那没问题.
问题出在服务中,我正在尝试进行http POST并获取并报错:
[异常:TypeError:在严格模式函数或Function.remoteFunction上调用它们的参数对象上,可能无法访问“ caller”,“ callee”和“ arguments”属性
error capture
complete error capture

显然,该错误是在handleErrorObservable中给出的,因为该帖子也未执行,在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);
            }
    
    
}

感谢所有人,欢迎您提供任何帮助.

解决方法:

根据我所看到的,我可以假设未发送您的请求的原因是您在可观察到的任何地方都没有调用.subscribe.可观察对象只是函数,只有在调用它们之前它们才会执行.这就是订阅的作用-调用函数,然后也执行所有运算符.

在开发人员工具中看到的不是请求中的实际错误,而是向您传达的消息,即您无法查看开发人员工具中的参数,调用方或函数的被调用方.

因此,解决方案是简单地添加订阅调用(否则异步管道也可以完成此工作).

标签:angular,typescript,angular2-services,javascript
来源: https://codeday.me/bug/20191109/2013002.html