[英]Loading dynamic service inside angular 2 service
我正在嘗試做一種套接字處理程序。 因此,在我的角度2代碼中,我得到了一個名為“ socket.service.ts”的服務。
此服務導入套接字io lib並創建套接字。
但是我試圖從json文件中獲取不同的處理程序。 例如:用戶在config.json文件中編輯“ handler”鍵,它應該更改套接字的處理程序。
我希望該處理程序具有角度2服務語法。 因此,我嘗試使用
System.import(path).then()
但這給了我一個錯誤。
這是我的socket.service:
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);
}
謝謝 !
好的,我找到了解決方案:首先,我的path變量不好,我們應該知道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]();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.