我正在尝试做一种套接字处理程序。所以在我的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]();