Я пытаюсь изучить основы ng2, и система внедрения зависимостей меня убивает.
Я использую быстрый запуск ng из: https://github.com/angular/quickstart/blob/master/README.md
Я пытаюсь импортировать этот пакет в приложение: https://www.npmjs.com/package/arpad а>. Я установил пакет через обновление npm, мои зависимости package.json выглядят так:
"dependencies": {
"angular2": "2.0.0-beta.9",
"systemjs": "0.19.24",
"es6-promise": "^3.0.2",
"es6-shim": "^0.35.0",
"reflect-metadata": "0.1.2",
"rxjs": "5.0.0-beta.2",
"zone.js": "0.5.15",
"arpad":"^0.1.2" <----- the package i'm trying to import
}
Вот как пакет экспортирует свой код:
module.exports = ELO;
У меня есть компонент, импортирующий модуль следующим образом:
import {ELO} from 'node_modules/arpad/index.js';
Вот как systemJS настраивается в index.html приложения:
<script>
System.config({
packages: {
app: {
format: 'register',
defaultExtension: 'js'
}
},
map:{'arpad':'node_modules/arpad'} <---- here
});
System.import('node_modules/arpad/index.js'); <--- and here for good measure
System.import('app/main')
.then(null, console.error.bind(console));
</script>
Теперь это очень похоже на то, что я снимаю в темноте, и это именно то, что сообщения об ошибках в консоли приложения заставили меня сделать. Когда я пытаюсь использовать модуль в компоненте следующим образом:
public elo = ELO;
constructor(){
this.score = this.elo.expectedScore(200, 1000);
---- there is more to the component but this is the part where it breaks
}
Я получаю следующее сообщение:
"ORIGINAL EXCEPTION: TypeError: this.elo is undefined"
Так что вопрос в более широком плане:
Как я могу заставить данный пакет npm (который еще не является угловым модулем) работать в компоненте или службе, используя systemJS (или Webpack, или Browserify) в качестве загрузчика модулей в кратком руководстве по ng2?