2015-12-31 11 views
11

は私が持つRxJSを使用して問題を抱えている角度活字体定義ファイルから提案された方法のほとんどは、私のような観察可能なオブジェクトで定義されていない2 ...欠落観測可能な方法RxJS 5.0.0-beta.0

enter image description here

enter image description here

、私は方法が観察プロトタイプ上に存在しないことを、考え出しました。

enter image description here

私は物事の多くは5にバージョン4から変更知っているので、私は何かを逃していますか? Browserifyは私のためにそれを追加しました

... enter image description here

答えて

17

import 'rxjs/operator/map'; 
import 'rxjs/operator/delay'; 
import 'rxjs/operator/mergeMap'; 
import 'rxjs/operator/switchMap'; 
import 'rxjs/observable/interval'; 
import 'rxjs/observable/forkJoin'; 
import 'rxjs/observable/fromEvent'; 

しかし、あなたはまた、コード取り組んでいる。ここ

System.config({ 
      defaultJSExtensions: true, 
      paths: { 
       'rxjs/observable/*' : './node_modules/rxjs/add/observable/*.js', 
       'rxjs/operator/*' : './node_modules/rxjs/add/operator/*.js', 
       'rxjs/*' : './node_modules/rxjs/*.js' 
      } 
     }); 

System.js

でこれを設定する必要がありますコード、私はそれを修正するために何を追加するかを正確に伝えることはできません。

しかし、一般的な問題は次のとおりです。RxJS 5は、Betaステージに入った時点でもうAngular 2に含まれていません。必要な演算子をインポートするか、すべてインポートする必要があります。 import文のようになります。source treeを見て、ご希望のモジュールへのパスを決定するには

import 'rxjs/add/operator/map'; // imports just map 
import 'rxjs/add/operator/mergeMap'; // just mergeMap 
import 'rxjs/add/operator/switchMap'; // just switchMap 
import {delay} from 'rxjs/operator/delay'; // just delay 

または

import 'rxjs/Rx'; // import everything 

のような。 addのすべてのインポートでは、プロパティがObservableまたはObservable.prototypeに追加されます。 addがなければ、import {foo} from 'rxjs/path/to/foo'を実行する必要があります。

また、RxJSがプロジェクトに正しく取り込まれていることを確認する必要があります。このような何かがあなたのindex.htmlファイルに行くだろう:

System.config({ 
    map: { 
     'rxjs': 'node_modules/rxjs' // this tells the app where to find the above import statement code 
    }, 
    packages: { 
     'app': {defaultExtension: 'js'}, // if your app in the `app` folder 
     'rxjs': {defaultExtension: 'js'} 
    } 
}); 
System.import('app/app'); // main file is `app/app.ts` 

あなたは(私が行ったように)Webpack to build the Angular 2 app like in this Github projectを使用する場合は、Systemものと輸入がそれを行う必要があることを必要としません。

+0

素晴らしいマイケル。 –

1

プロジェクトでJSPMがセットアップされているため、パスセクションにrxjsを追加するだけでは十分ではありませんでした。そうでない場合は、いくつかのrxjsのファイルを一度jspm_packagesを経て、二回ロードされます、あなたが使用している場合

"npm:[email protected]": { 
    "crypto": "github:jspm/[email protected]", 
    "es6-promise": "npm:[email protected]", 
    "es6-shim": "npm:[email protected]", 
    "process": "github:jspm/[email protected]", 
    "reflect-metadata": "npm:[email protected]", 
    "rxjs": "npm:[email protected]", 
    "zone.js": "npm:[email protected]" 
}, 

だから、JSPMを使用して、上記のrxjsマッピングを削除してください:

JSPMは私SystemJSに次の構成(マップセクション)を追加しましたかつnode_modules経由で一度。

関連する問題