Javascript 无法将JSON对象返回给调用程序

Javascript 无法将JSON对象返回给调用程序,javascript,json,angular,Javascript,Json,Angular,我正在运行下面的代码,允许用户登录到系统。作为此功能的一部分,正在使用HTTP POST返回一个可观察的。因为这是使用JWT,所以我必须提取令牌中的值 我想以JSON格式将带有这些标记值的Observable返回给调用程序。我已尝试使用地图功能,如下所示: adminLogin(username, password) { let url = `${this._apiRoot}/login`; let tokenResp = {}; this.h

我正在运行下面的代码,允许用户登录到系统。作为此功能的一部分,正在使用HTTP POST返回一个可观察的。因为这是使用JWT,所以我必须提取令牌中的值

我想以JSON格式将带有这些标记值的Observable返回给调用程序。我已尝试使用地图功能,如下所示:

adminLogin(username, password) {
        let url = `${this._apiRoot}/login`;
        let tokenResp = {};


        this.http.post(url, JSON.stringify({ username: username, password: password }), { observe: 'response' })
          .map(response => response.json())
          .subscribe((response: HttpResponse<any>) => {
         [ ... snip ...]
但我的经验是,订阅从未被呼叫过

我能做什么

短暂性脑缺血发作

原始代码


若你们想返回一个带有任何类型标记的observable,你们不能将subscribe方法参数类型设为HttpResponse

试试看

adminLogin(username, password) : Observable<JWT> //Assuming this is a type
    this.http.post(url, JSON.stringify({ username: username, password: password }), { observe: 'response' })

              .map((response: HttpResponse<any>) => {

                let token = response.headers.get("Authorization");

                if (token) {

                  let t = JWT(token);

                  return t;
                }
                return null; //Or error
              },
          //Error handling

谢谢你的回复。对于调用方法,类型“void”上不存在我获取的属性“subscribe”。这里发生了什么事?
adminLogin(username, password) : Observable<JWT> //Assuming this is a type
    this.http.post(url, JSON.stringify({ username: username, password: password }), { observe: 'response' })

              .map((response: HttpResponse<any>) => {

                let token = response.headers.get("Authorization");

                if (token) {

                  let t = JWT(token);

                  return t;
                }
                return null; //Or error
              },
          //Error handling
adminLogin(username,password).subscribe((token: JWT )=>
{
//use token
}