我曾经通过调用服务器来引导您的Angular JS应用程序以获取用户可以访问的模块,我无法想象如何在Angular 2+中
这是一个AngularJS例子
我只使用ngMockE2E作为模拟例子。
(function (ngNode) {
angular.module("boostrapApp", ['ngMockE2E']).service('clientModule', function ($http) {
this.get = function () {
return $http.get('modules.json');
}
}).run(function ($httpBackend) {
$httpBackend.whenGET('modules.json').respond(function(method, url, data) {
return [200, ['m1', 'm2', 'm3'], {}];
});
});
angular.bootstrap(ngNode, ['boostrapApp']);
angular.element(ngNode).injector().get('clientModule').get().then(function (modules) {
angular.module('app', modules.data);
angular.module('app').run(['$log', function ($log) {
$log.info('run app');
}]);
angular.bootstrap(document.body, ['app']);
});
})(document.createElement('div'));
angular.module('m1', []).run(['$log', function ($log) {
$log.info('run m1');
}]);
angular.module('m2', []).run(['$log', function ($log) {
$log.info('run m2');
}]);
angular.module('m3', []).run(['$log', function ($log) {
$log.info('run m3');
}]);
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.5/angular.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-mocks/1.6.9/angular-mocks.js"></script>
你可以使用Dynamic Content Loader。