在angular 2服务内加载动态服务
Loading dynamic service inside angular 2 service
我正在尝试做一种套接字处理程序。所以在我的angular 2代码中,我得到了一个名为"socket.service.ts"的服务
此服务导入套接字io lib并创建套接字。
但我正在尝试从json文件中获取不同的处理程序。例如:用户在config.json文件中编辑"handler"键,它应该更改套接字的处理程序。
我希望这个处理程序具有angular 2服务语法。所以我试着用导入这个动态服务
System.import(path).then()
但这给了我一个假象。
这是我的插座。服务:
private _byHandler() {
var _this = this;
this._initHandler((socketHandler) => {
_this.config = socketHandler.getConfig(_this.config);
_this._handler = socketHandler;
_this._createSocket();
});
}
private _initHandler(callback) {
let _this = this,
handler = this.config.handler,
path = "./../handlers/socket/" + handler + "/" + handler + "handler";
System.import(path).then(callback);
}
谢谢!
好的,我找到了解决方案:首先,我的路径变量不好,我们应该知道System.import返回的值不是类本身,而是包含该类的对象。
所以在.then()中应该做一些类似的事情:
let handlerClass = null;
for(let k in socketHandler) {
handlerClass = k; //Get the first key of the object cause we don't know the class name
break;
}
_this._handler = new socketHandler[handlerClass]();
相关文章:
- Sails.js:我可以将一些服务/模型打包为npm并在Sails.jss应用程序中加载npm吗
- 如何使用 javascript 从 Web 服务重新加载项目集合
- 谷歌应用程序脚本html服务和加载谷歌地图javascript api V3
- 如何使应用程序加载独立于web服务调用
- 服务工作者第一次不加载
- 必须等待执行 jQuery,直到加载服务
- Angular $http 服务不加载 json 文件
- 如何优化服务和加载JavaScript文件
- AJAX加载JSON数据并将其存储在angularjs服务中
- 如何在从缓存加载路由后强制服务工作者从网络请求路由
- JQuery不加载通过服务获得的效果
- AngularJS每次打开页面时加载服务
- requirejs:从web服务加载脚本/模块
- 使用指令范围中的参数从角度指令中的服务加载数据
- 使用AngularJS从web服务加载数据
- 如何在AngularJS中将数据从同一服务加载到两个不同的作用域变量
- Angular ui路由器:从服务加载数据和参数的值
- JS数据服务加载所有数据或只需要的数据
- 如何从返回JSON的REST web服务加载ng表中的数据
- AngularJS从服务加载数据