2017-12-12 112 views
5

साथ forkjoin उपयोग कर सकते हैं, मैं एक बड़ी परियोजना कोणीय CLI 1.5.5 का उपयोग कर एक संस्करण के लिए कोणीय के "त्वरित आरंभ" के साथ शुरू से बनाया गया है कि विस्थापित करने का निर्णय लिया। अभी, मैं उत्पन्न होने वाले विभिन्न मुद्दों को ठीक कर रहा हूं और मैं इसे ठीक नहीं कर सकता।मैं अब हाल ही में rxjs 5.5.2

मैंने पढ़ा है कि यह rxjs, जो मैंने किया था के किराए पर देने ऑपरेटरों का उपयोग करने के लिए बेहतर था और यह बहुत अच्छी तरह से काम करता है। हालांकि, मैं भी कोड की इन पंक्तियों के होते हैं:

import { Observable } from "rxjs/Observable"; 
import "rxjs/add/observable/forkjoin"; 

... 

let piecesGrouping$: Observable<IGroupedPiece[]>[] = deliveries.map(delivery => this._pieceService.getGroupedPieces(delivery.pieces)); 

Observable 
    .forkJoin(...piecesGrouping$) 
    .subscribe((groups) => { 
    groups.forEach((group, i) => deliveries[i].groupedPieces = group); 

    resolve(); 
    }); 

वे पिछले संस्करण है कि rxjs 5.5.2 के साथ rxjs 5.4.3 उपयोग कर रहा था, अब में बहुत अच्छी तरह से काम कर रहे थे, वे अब नहीं है और मैं निम्न त्रुटि:

ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'apply' of undefined TypeError: Cannot read property 'apply' of undefined

मैं piecesGrouping$[0], piecesGrouping$[1] द्वारा प्रसार ऑपरेटर बदलने के लिए त्रुटि अपने आप में forkJoin के बारे में कुछ नहीं कहा के रूप में करने की कोशिश की, तो मैं मिलता है:

ERROR Error: Uncaught (in promise): TypeError: WEBPACK_IMPORTED_MODULE_8_rxjs_Observable.a.forkJoin is not a function TypeError: WEBPACK_IMPORTED_MODULE_8_rxjs_Observable.a.forkJoin is not a function

तो ऐसा लगता है कि मैं forkJoin गलत तरीके से आयात कर रहा हूं। मैंने इसे "आरएक्सजेएस/अवलोकन योग्य/फोर्कजॉइन" से आयात करने की कोशिश की लेकिन यह काम नहीं किया।

मुझे क्या याद आ रही है?

उत्तर

10

Observable पैचिंग का उपयोग न करें, सीधे forkJoin का उपयोग करें:

import {forkJoin} from "rxjs/observable/forkJoin"; 

forkJoin(...piecesGrouping$).subscribe() 
+0

@ssougnez, आपका स्वागत है। जैसा कि मैंने सुझाव दिया, पैचिंग आयात का उपयोग न करें। इंस्टेंस ऑपरेटरों और स्थिर ऑपरेटरों के लिए सीधे लेटेबल ऑपरेटरों का उपयोग करें। –

1

आप एक समारोह के रूप में उपयोग किया जाना चाहिए

forkJoin(...piecesGrouping$) 
    .subscribe((groups) => { 
    groups.forEach((group, i) => deliveries[i].groupedPieces = group); 

    resolve(); 
    }); 

आयात बयान के रूप में

import { forkJoin } from "rxjs/observable/forkJoin"; 

यह बदल गया है 5.2 संस्करण के एक भाग के रूप में जारी किया गया था। पढ़ें change log

+0

धन्यवाद, यह काम करता है, हालांकि मैं "AngularInDepth.com" के जवाब को स्वीकार करेंगे के रूप में वह भी डाल संशोधित आयात लाइन – ssougnez

संबंधित मुद्दे