簡體   English   中英

在angular 2服務中加載動態服務

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM