未处理的 Promise 拒绝:Rx_1.Subject 不是构造函数;区域: ; 任务:Promise.then;值:TypeError:Rx_1.Subject 不是构造函数

amy*_*374 5 rxjs typescript systemjs angular

我有一个 Angular 2 应用程序,用于systemjs映射/加载。

在项目中导入rxjs并引用它是可以的,但是当部署代码时,它无法构造变量Subject并显示消息:

“未处理的 Promise 拒绝:Rx_1.Subject 不是构造函数;区域:;任务:Promise.then;值:TypeError:Rx_1.Subject 不是构造函数”。

systemjs 上的接收:

(function (global) {
var map = {
    'app': 'app',  
    '@angular': 'js/@angular', 
     // other libraries
    'rxjs': 'js/rxjs', 
};

// packages tells the System loader which filename and/or extensions to look for by default (when none are specified) 

var packages = {
    'app': { main: 'main.js', defaultExtension: 'js' },
    'rxjs': { defaultExtension: 'js' }
};
Run Code Online (Sandbox Code Playgroud)

我实例化主题的方式:

import { Injectable } from '@angular/core';
import { Subject } from "rxjs/Rx";

@Injectable()
export class MyService {

constructor(private http: Http) {
    let b = new Subject<string>(); // exteption HERE
    let m = b.asObservable(); 
    b.next("k");
Run Code Online (Sandbox Code Playgroud)

所有内容都rxjs在浏览器中正常加载。


更新:如果我将RxAngular 服务导入为:

import * as Rx from 'rxjs/Rx';
Run Code Online (Sandbox Code Playgroud)

Rx在控制台中检查对象相比,它只有一个默认值和__useDefault属性 getter。其他一切,可观察的,主题都可以通过它们访问。

喜欢做 :

var observable = Rx.Observable.create(function (observer) {
        observer.next(1);
    });
Run Code Online (Sandbox Code Playgroud)

返回:

VM1083:1 未捕获类型错误:无法读取属性“创建”undefined

当然,然而:

var observable = Rx.default.Observable.create(function (observer) {
        observer.next(1);
    });
Run Code Online (Sandbox Code Playgroud)

工作正常。

我的项目是在 Typescript 中,我尝试过目标编译es5es6.

amy*_*374 0

在查看如何从“Rx”(非角度)导入“Observable”后,我成功地解锁了

我将 tsconfig.json 模块从“system”更改为“commonjs”,并且 Rx lib 文件在没有吸气剂的情况下进行转换。