我正在使用TypeScript
,AngularJS
,ES6
和JSPM
开展项目。我有一些库,当然包括AngularJS和其他一些依赖于AngularJS的库,比如angular-bootstrap-datetimepicker
。
我遇到的问题是angular-bootstrap-datetimepicker
试图再次加载角度。我收到了这个警告:
警告:尝试不止一次加载角度。
经过一些研究后,我能够通过编辑config.js
文件来“解决”问题:
'npm:angular-bootstrap-datetimepicker@0.4.0': {
// 'angular': 'npm:angular@1.4.8',
'moment': 'npm:moment@2.11.0'
},
如果我取消注释该行,则会发出警告。我知道这不是一个解决方案,因为任何npm更新都会覆盖我的更改,而其他库也可以做同样的事情。那么有谁知道如何以“正确的方式”禁用这些依赖关系?
感谢。
修改
'use strict';
import 'angular';
import 'jquery';
import * as _ from 'lodash';
import appData from '../app.data/module';
import appCore from '../app.core/module';
import appInstance from '../app.instance/module';
export default angular.module('app', [
appData.name,
appCore.name,
appInstance.name
]);
angular.bootstrap(document.documentElement, ['app']);
编辑2:
'use strict';
export default function RouteConfig($urlRouterProvider): void {
// apply consistent trailing slashes and casing
$urlRouterProvider.rule(function ($injector, $location) {
var path = $location.path(),
search = $location.search(),
newPath,
params;
if (path === '/') {
newPath = '/';
}
if (path[path.length - 1] === '/') {
newPath = path.substring(0, path.length - 1);
} else {
newPath = path;
}
if (Object.keys(search).length > 0) {
params = [];
angular.forEach(search, function (v, k) {
params.push(k + '=' + v);
});
newPath += '?' + params.join('&');
}
newPath = newPath.toLowerCase();
if ($location.url() === newPath) {
return;
}
$location.replace().path(newPath);
});
$urlRouterProvider.otherwise('/');
}