相关疑难解决方法(0)

fromPromise在Observable类型中不存在

在使用rxjs的Angular 2中,我试图将Promise转换为Observable.由于许多在线指南的显示我用fromPromiseObservable.哪个抛出错误:

Property 'fromPromise' does not exist on type 'typeof Observable'.
Run Code Online (Sandbox Code Playgroud)

Observable导入如下:

import { Observable } from "rxjs/Observable";
Run Code Online (Sandbox Code Playgroud)

尝试fromPromise像其他运算符一样导入会导致错误:

import 'rxjs/add/operator/fromPromise';
Run Code Online (Sandbox Code Playgroud)

即使我压制打字稿错误,它仍然会导致错误:

(<any>Observable).fromPromise
Run Code Online (Sandbox Code Playgroud)

错误:

Uncaught (in promise): TypeError: __WEBPACK_IMPORTED_MODULE_3_rxjs_Observable__.Observable.fromPromise is not a function
Run Code Online (Sandbox Code Playgroud)

rxjs repo 在这里报告了一些类似的问题,但也没有解决方案.

promise observable rxjs es6-promise angular

63
推荐指数
2
解决办法
3万
查看次数

类型"{}"上不存在属性"json"

我在Typescript中有一个抽象基类,如下所示:

import {Http, Headers, Response} from 'angular2/http'; 
export abstract class SomeService {
    constructor(private http:Http) {}   

    protected post(path:string, data:Object) {
        let stringifiedData = JSON.stringify(data);
        let headers = new Headers();
        headers.append('Content-Type', 'application/json');
        headers.append('Accept', 'application/json');

        this.http.post(`http://api.example.com/${path}`, stringifiedData, { headers })
            .map(res => res.json())
            .subscribe(obj => console.log(obj));
    }
}
Run Code Online (Sandbox Code Playgroud)

它完美地运作.但是,Typescript编译器正在抱怨.map(res => res.json()).我一直收到这个错误:

ERROR in ./src/app/components/shared/something/some.abstract.service.ts
(13,29): error TS2339: Property 'json' does not exist on type '{}'.
Run Code Online (Sandbox Code Playgroud)

我按照角度2文档中的示例进行操作,它可以工作.我只是厌倦了盯着这个错误.我错过了什么吗?

rxjs typescript angular

18
推荐指数
2
解决办法
3万
查看次数

如何从 xhr 返回 Observable

我有这样的功能,它只是上传带有 xhr 请求的图像:

public uploadAvatar(avatarFile, callback) {
    return new Promise((resolve, reject) => {
      let formData: any = new FormData();
      let url = 'avatar';
      let imgArr = "avatar";
      let xhr = new XMLHttpRequest();

      formData.append(imgArr, avatarFile, avatarFile.name);
      xhr.onreadystatechange = function () {
        if (xhr.readyState == 4) {
          if (xhr.status == 200) {
            resolve(JSON.parse(xhr.response));
            callback('success');
          } else {
            reject(xhr.response);
            callback('error');
          }
        }
      };

      xhr.open("POST", environment.baseUrl + url, true);
      xhr.setRequestHeader('Auth', this._auth.getToken());
      xhr.send(formData);
    });
  }
Run Code Online (Sandbox Code Playgroud)

我怎样才能返回 Observable insted Promise?

reactive-programming observable rxjs angular

4
推荐指数
1
解决办法
3195
查看次数