Как создать DI как фабрику?

У меня есть два пользовательских класса:

export class DocumentBlock extends DocumentCustomBlock {}
export class DepartamentBlock extends DocumentCustomBlock {}


Модель:

class CustomBlockModel {
   constructor(public type: string, id: number)
}


И есть заводская функция:
export const documentCustomBlockFactory = (httpClient: HttpClient, model: CustomBlockModel) => {
    try {
        switch (model.type) {
            case 'doc_num_date_block':
                return new DocNumDateBlock(httpClient, model);
            case 'dep_block':
                return new DepartamentBlock(httpClient, model);

            default:
                throw new Error('Undefined block type!');
        }
    } catch (e) {
        console.log('ERROR: ' + e);
    }
};


Мне нужно создать конкретный класс и передать его как параметры в MatDialog.

Внутри компонента DocumentList я получаю данные ответа в виде массива:

this.documents = response;

Затем я получаю один элемент массива и мне нужно создать экземпляр:

let model = new CustomBlockModel(this.documents[0]);
matDialog.config.data = documentCustomBlockFactory(this.httpClient, model);


Как сделать так, чтобы с помощью поставщиков Angular и поставщика фабрики?
  • Вопрос задан
  • 31 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
23 окт. 2020, в 05:33
15000 руб./за проект
23 окт. 2020, в 03:00
1500 руб./за проект