2016-02-29 5 views
20

Я хотел попробовать создать приложение Angular 2 с угловым cli (https://github.com/angular/angular-cli), а затем использовать ng2-материал (https://github.com/justindujardin/ng2-material) для компонентов пользовательского интерфейса. Но я просто не понимаю, как/где я должен включить библиотеку ng2-материала, чтобы использовать ее.Как добавить стороннюю библиотеку при использовании angular-cli?

Я создал проект с ng new myproject, затем я запустил сервер с ng serve и открыл веб-страницу, которая только что сработала. Следующий шаг, я установил ng2-материал с npm install ng2-material --save. Затем я добавил MATERIAL_PROVIDERS в автозагрузку углового, как показано здесь https://github.com/AngularShowcase/angular2-seed-ng2-material/blob/master/app/bootstrap.ts.

В веб-браузере отображается сообщение GET http://localhost:4200/ng2-material/all 404 (Not Found), и я просто не могу понять, как избавиться от него.

angular-cli, похоже, что-то делает, чтобы создать папку dist, в которой находятся некоторые из модулей узлов, которые используются в index.html, но я не вижу, где и как это настроено.

+0

Перейдите в 'your_project/src/index.html', там у вас есть SystemJS config. –

ответ

10

[EDIT 29/09/2016] Теперь, когда угловой кли использует WebPack ISO system.js, этот ответ не сделать больше смысла. Проверьте страницы '3d party lib installation' и 'global lib installation' на вики-странице angular-cli.

[EDIT 10/05/2016] Это подробно описано на angular cli wiki.

Это работает для меня:

В Ember-CLI-build.js, зависимость добавляется к vendorNpmFiles, например

module.exports = function (defaults) { 
    var app = new Angular2App(defaults, { 
     vendorNpmFiles: [ 
      'a2-in-memory-web-api/web-api.js' 
     ] 
    }); 
    return app.toTree(); 
} 

(где a2-в-памяти, веб-апи/веб-api.js файл в моем node_modules папку)

В index.html вы добавляете следующая строка:

<script src="vendor/a2-in-memory-web-api/web-api.js"></script> 

Наконец, вы перезагрузите свой сервер.

Не проверял его с угловым материалом, но вы получили эту идею.

+1

Новое описание в Угловой CLI wiki работало для меня. Спасибо за добавление ссылки. – zabbarob

+0

Как узнать, какие файлы следует включать в vendorNpmFiles? В некоторых пакетах есть много js-файлов в их модуле. –

+0

. Вы можете использовать подстановочные знаки, чтобы включить их все. –

2

Попробуйте настройки SystemJS в index.html, как это:

System.config({ 
    packages: { 
     app: { 
      format: 'register', 
      defaultExtension: 'js' 
     }, 
     'node_modules/ng2-material': { 
      format: 'register', 
      defaultExtension: 'js' 
     } 
    }, 
    paths: { 
     'ng2-material/all': 'node_modules/ng2-material/all' 
    } 
}); 
+0

спасибо, но это не работает: 'angular2-polyfills.js: 1243 Ошибка: ошибка XHR (404 не найдена) загрузка http: // localhost: 4200/node_modules/ng2-material/all.js (...) Zone. run @ angular2-polyfills.js: 1243 Проблема: при запуске сервера dev с файлами 'ng serve' не подаются из корня проекта, а из сгенерированной папки' dist'. Однако данные как-то кэшируются. Добавление или удаление файлов с 'dist' ничего не меняет, и я не знаю, как сказать angular-cli скопировать файлы ng2-материала. – zabbarob

+0

PS: обходным путем для этого является копирование файлов node_module в папку src «cp -r node_modules/ng2-material src/node_modules/ng2-material», что делает скопированные файлы угловыми кликами как часть источника проекта ,однако затем появляется сообщение об ошибке «Uncaught ReferenceError: require not defined», когда SystemJS загружает модуль ng2-материала. – zabbarob

+0

PPS: «Uncaught ReferenceError: require not defined» может быть предотвращено путем изменения 'format: 'register''' 'format:' cjs'' в' System.config' '' node_module/ng2-material'' раздел. но затем 'angular2-polyfills.js' начинает выплевывать ошибку' Невозможно прочитать свойство getOptional 'undefined' – zabbarob