One simple way is to remove rxjs
from map
and add it as rxjs*
into path
(I think you'll need to use absolute path here):
paths: {
'rxjs*': 'https://unpkg.com/rxjs@5.4.3/bundles/Rx.min.js'
},
This however works only with SystemJS 0.19.* because since 0.20 the wildcard *
is no longer supported, see: https://github.com/systemjs/systemjs/issues/1039
For Angular2: I'm not aware if there's any recommended way for SystemJS 0.20 but this has been discussed on RxJS GitHub page so you can read the entire thread https://github.com/ReactiveX/rxjs/issues/2458. In particular from my comment https://github.com/ReactiveX/rxjs/issues/2458#issuecomment-286706048 and then another comment where I create a custom AMD bundle which is pretty simple to do and works with SystemJS 0.20 as well https://github.com/ReactiveX/rxjs/issues/2458#issuecomment-287193937.
Edit: So apparently this now works only with Angular2 and not in Angular4: https://plnkr.co/edit/ddRnL2I4ps2U2pdoRo04?p=info
For Angular4 the easies way I found is to create a new file that polyfills missing exports (see commends bellow):
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/share';
import 'rxjs/add/observable/merge';
export function merge(...observables: Observable[]) {
return Observable.merge(observables);
}
export function share(observable: Observable) {
if (!observable) {
return;
}
return observable.share();
}
And then load this file instead of the bundled RxJS:
paths: {
'npm:': 'https://unpkg.com/',
'rxjs/observable/merge': './src/rxjs-polyfill.ts',
'rxjs/operator/share': './src/rxjs-polyfill.ts',
'rxjs*': 'https://unpkg.com/rxjs@5.4.3/bundles/Rx.min.js'
},
Working demo with Angular4: http://plnkr.co/edit/tu561CX0n1I9f53iVv12