angualr-cli
アプリケーションでRxjs
を使用しています。
viewer.component.ts内
//Other Imports
import { Observable } from 'rxjs/Observable';
//omitting for brevity
export class ViewerComponent implements OnInit, AfterViewInit, OnDestroy {
someFunction(someArg){
//omitting for brevity
let someArray: any = [];
//Add some info
Observable.forkJoin(someArray).subscribe(data => {
//Do something with data
});
}
//omitting for brevity
}
私は
ERROR TypeError: __WEBPACK_IMPORTED_MODULE_2_rxjs_Observable__.Observable.forkJoin is not a function
at ViewerComponent.webpackJsonp../src/app/component/viewer.component.ts.ViewerComponent.someFunction(http://localhost:4200/main.bundle.js:4022:73)
at http://localhost:4200/main.bundle.js:3951:31
しかし、Rxjs
を完全に(import 'rxjs';
)インポートすると、すべてが機能します。エラーなし。私は、何が必要なのかを理解しているようです。 rxjs/Observable/forkjoin
もインポートしようとしましたが、何も役に立ちません。
これをどのように進めるかについてのポインタ。
here で説明したように、2つのオプションがあります。
最初の場合、次のようにインポートを使用します。
import Rx from 'rxjs/Rx';
Rx.Observable.forkJoin(1,2,3)
次のような2つ目:
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/forkJoin';
探しているのは2番目の選択肢だと思います。
あるプロジェクトでは、次のforkjoinコードを使用して画像をアップロードしましたが、完全に機能します。
/**
* Upload multiple image and then update the feature
*/
public uploadImages(apiParams: any[], imageItems: any[]): Observable<any> {
if (imageItems.length === 0) return;
let promises = [];
for (let imageItem of imageItems) {
promises.Push(this.uploadImage(apiParams, imageItem));
}
return Observable.forkJoin(...promises);
}
/**
* upload single image
*/
public uploadImage(apiParams: any[], imageItem: any): any {
let _formData = new FormData();
_formData.append("UploadedImage", imageItem, (new Guid()).toString()+'.png');
const imageApiUrl = StringFormatter.format(imagePoints.create, apiParams);
return Observable.fromPromise(
fetch(imageApiUrl, {
method: "POST",
body: _formData
})
.then(result => result.json())
);
}