0

Я пытаюсь сделать своего рода обработчик сокета. Таким образом, в моем угловом коде 2 я получил услугу с именем «socket.service.ts».Загрузка динамической службы внутри угловой службы 2

Эта услуга импортирует сокет io lib и создает сокет.

Но я пытаюсь получить разные обработчики из json-файла. Например: Пользователь редактирует ключ «обработчик» в файле config.json и должен изменить обработчик сокета.

Я хочу, чтобы этот обработчик имел угловой 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); 
} 

Спасибо!

ответ

0

Хорошо, я нашел решение: Сначала моя переменная пути не была хорошей, и мы должны знать, что возвращаемое значение 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](); 
Смежные вопросы