2017-10-13 7 views
0

私は、systemjsを使ってマッピング/ロードするangular2アプリを持っています。未処理プロミス拒否:Rx_1.Subjectはコンストラクタではありません。ゾーン: ;タスク:Promise.then;値:TypeError:Rx_1.Subjectはコンストラクタではありません

プロジェクトでrxjsをインポートし、それは結構ですが、コードが展開されるとき、それはメッセージと件名の変数を構築するために失敗した参照:

"Unhandled Promise rejection: Rx_1.Subject is not a constructor ; Zone: ; Task: Promise.then ; Value: TypeError: Rx_1.Subject is not a constructor".

Rxの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' } 
}; 

私は主題をインスタンス化しています方法:

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

にrxjsの全てが中に細かいロードされていますブラウザ。


UPDATE:私はのように私の角度サービスでのRxをインポートする場合は、この多くのを見て、:

import * as Rx from 'rxjs/Rx'; 

とコンソールでのRxオブジェクトを検査よりも、それは単にデフォルトを持っており、 __useDefaultプロパティゲッター。 他のすべて、Observable、Subjectはそれらからアクセス可能です。

やっ同様:

var observable = Rx.Observable.create(function (observer) { 
     observer.next(1); 
    }); 

を取り戻す:

VM1083:1 Uncaught TypeError: Cannot read property 'create' of undefined

もちろん、一方:正常に動作します

var observable = Rx.default.Observable.create(function (observer) { 
     observer.next(1); 
    }); 

私のプロジェクトはtypescriptで、私はターゲットコンパイルes5とes6を試しました。

+0

どの行に例外がありますか? –

+0

SubjectやObservableのいずれかをインスタンス化しようとしましたが、コメントアウトして遊んでいました。 – amy8374

+1

'' rxjs ':' js/rxjs''が何であるかを確認し、 'rxjs/Subject'からインポートしてみてください。 – martin

答えて

0

私はHow to import `Observable` from `Rx` (not angular)

を見た後、私は「commonjs」に「システム」からの私のtsconfig.jsonモジュールを変更、およびRxのlibファイルはゲッターなしtranspiledされているブロックされていない得ることができました。

2

これは観測について

@Injectable() 
export class MyService { 

    public invokeEvent:Subject<any> = new Subject(); 

    constructor() {} 
} 

をインスタンス化され、これはUsing Observablesについての素晴らしい本ですか件名の例です。

+0

それは私のために吹いているラインです。私はそれをコンストラクタの外に置いても、コンストラクタの中に置いても、コンストラクタに入れてもかまいません。 – amy8374

+0

これはインラインで構築されているため、なぜこれをコンストラクタに追加する必要がありますか? –

+0

インラインで構築しても、同じコンストラクタ例外が発生します。 – amy8374

関連する問題