我正在尝试使用基本路由并延迟加载带有angular.load.I的角度解析的单独模块。我使用带有ES6模块加载器的jspm
基本路由配置就像这样
import "angular";
import "angular-ui-router";
class RouteConfig {
constructor($stateProvider, $urlRouterProvider){
this.stateProvider = $stateProvider;
this.urlRouterProvider = $urlRouterProvider;
$stateProvider
.state("index", {
url: "/",
templateUrl: "/app/common/templates/home.html",
})
.state('order',{
url:'/order',
templateUrl:"/app/modules/order/templates/order.html",
//controller:"order.controller as orderCtrl",
resolve:{
load:()=>{
System.import('app/modules/order/order.module');
System.import('app/modules/order/order.controller');
}
}
});
$urlRouterProvider.otherwise("/");
};
static factory($stateProvider, $urlRouterProvider){
RouteConfig.instance = new RouteConfig($stateProvider,$urlRouterProvider);
return RouteConfig.instance;
};
}
RouteConfig.factory.$inject = ['$stateProvider', '$urlRouterProvider'];
export default RouteConfig;
现在我试图根据必要的模块延迟加载控制器。 所以模块和控制器加载为
import" angular&#34 ;; import" angular-ui-router&#34 ;;
class OrderModule {
constructor($log,$stateProvider,$urlRouterProvider){
//$stateProvider
// .state('order',{
// })
}
static factory($log){
OrderModule.instance = new OrderModule($log,$stateProvider,$urlRouterProvider);
return OrderModule.instance;
}
}
angular.module("order.module", ['ui.router']);
OrderModule.factory.$inject = ['$log','$stateProvider','$urlRouterProvider'];
export default OrderModule;
和控制器
"use strict";
class OrderController {
constructor() {
this.order = "Please place an order";
}
static factory() {
OrderController.instance = new OrderController();
return OrderController.instance;
}
}
angular.module('order.module').controller('Order.Controller', OrderController);
export default OrderController;
现在我正在尝试这个。这给了我错误
有人可以告诉你如何加载这个模块。似乎角度模块文件是通过systemjs加载的,但它没有注册角度模块。对此有何解决方案?
答案 0 :(得分:0)
尝试使用:
System.import('app/modules/order/order.module')
.then(function () {
System.import('app/modules/order/order.controller');
});
在load()
resolve
答案 1 :(得分:0)
在ES6中延迟加载jQuery的示例:
import('jquery').then((jquery) => {
window.$ = jquery.default; // Because jquery is the module, here is the new syntax for using this
window.$('#id');
});