Добавление ng2-bootstrap в стартер Angular2 с помощью SystemJS

Я пытаюсь добавить ng2-bootstrap modal для компонента проекта, который использует angular2-starter

Вот мой systemjs.conf.js

/*
 * This config is only used during development and build phase only
 * It will not be available on production
 *
 */

(function (global) {
    // ENV
    global.ENV = global.ENV || 'development';

    // map tells the System loader where to look for things
    var map = {
        'app': 'src/tmp/app',
        'test': 'src/tmp/test'
    };

    // packages tells the System loader how to load when no filename and/or no extension
    var packages = {
        'app': {
            defaultExtension: 'js'
        },
        'test': {
            defaultExtension: 'js'
        },
        'rxjs': {
            defaultExtension: 'js'
        },
        'ng2-bootstrap': {main: 'ng2-bootstrap',   defaultExtension: 'js' }
    };

    // List npm packages here
    var npmPackages = [
        '@angular',
        'rxjs',
        'lodash'
    ];

    // Add package entries for packages that expose barrels using index.js
    var packageNames = [
        // App barrels
        'app/shared',

        // 3rd party barrels
        'lodash',
        'vendor/ng2-bootstrap'
    ];

    // Add package entries for angular packages
    var ngPackageNames = [
        'common',
        'compiler',
        'core',
        'forms',
        'http',
        'platform-browser',
        'platform-browser-dynamic',
        'router'
    ];

    npmPackages.forEach(function (pkgName) {
        map[pkgName] = 'node_modules/' + pkgName;
    });

    packageNames.forEach(function (pkgName) {
        packages[pkgName] = {main: 'index.js', defaultExtension: 'js'};
    });

    ngPackageNames.forEach(function (pkgName) {
        map['@angular/' + pkgName] = 'node_modules/@angular/' + pkgName +
            '/bundles/' + pkgName + '.umd.js';
        map['@angular/' + pkgName + '/testing'] = 'node_modules/@angular/' + pkgName +
            '/bundles/' + pkgName + '-testing.umd.js';
    });

    var config = {
        map: map,
        packages: packages
    };

    // filterSystemConfig - index.html's chance to modify config before we register it.
    if (global.filterSystemConfig) {
        global.filterSystemConfig(config);
    }

    System.config(config);

})(this);

Я импортирую ModalDirective в свой компонент таким образом

import {ModalDirective} from 'ng2-bootstrap/ng2-bootstrap';

пакет.json

 "ng2-bootstrap": "^1.1.1",

Это ошибка, которую я получаю:

 (index):55 Error: (SystemJS) XHR error (404 Not Found) loading http://localhost:3000/ng2-bootstrap/ng2-bootstrap.js(…)

person user6123723    schedule 03.09.2016    source источник


Ответы (2)


В systemjs.config.js отсутствует карта ng2-bootstrap. Добавить вот так-

'ng2-bootstrap':              'node_modules/ng2-bootstrap',

и в разделе пакетов используйте вот так:

'ng2-bootstrap': { main: 'ng2-bootstrap.js', defaultExtension:'js'}

Для получения дополнительной информации см. эту ссылку.

Посмотрите, поможет ли это.

person Sanket    schedule 04.09.2016
comment
После этого я получаю эту ошибку. /datepicker/date-formatter.js:2:14" rel="nofollow noreferrer">localhost:3000/node_modules/ng2-bootstrap/components/datepicker/) - person user6123723; 04.09.2016

Измените переменную карты system.config.js следующим образом:

// map tells the System loader where to look for things
var map = {
    'app': 'src/tmp/app',
    'test': 'src/tmp/test',
    'ng2-bootstrap': 'node_modules/ng2-bootstrap/bundles/ng2-bootstrap.umd.js'
};

А также измените оператор импорта следующим образом:

import { ModalDirective } from 'ng2-bootstrap';

Теперь удалите ng2-bootstrap из переменной packages.

Дайте мне знать в комментариях, если у вас все еще есть какие-либо ошибки.

person Dhyey    schedule 02.06.2017