创建具有依赖关系的类的新实例,不了解工厂提供者 [英] Create new instance of class that has dependencies, not understanding factory provider

查看:8
本文介绍了创建具有依赖关系的类的新实例,不了解工厂提供者的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经为此研究了一段时间,似乎找不到足够清晰的答案来理解.我有一个 TestComponent,它使用 TestService 从服务器获取一组 TestModel.当我获取这些测试模型时,它只是一个 json 文件,服务器正在读取该文件并使用正确的 mime 类型发回该文件.从服务器获取测试模型后,我将它们放在一个简单的选择元素下拉列表中.选择测试模型后,它会在嵌套组件 TestDetailComponent 中显示选定的测试模型.

这一切都很好,而且工作正常.当我从服务器中提取数据时,我一直遇到问题.由于 JavaScript 没有运行时检查,我们无法自动将 JSON 从服务器转换为 typescript 类,因此我需要使用检索到的 JSON 手动创建 TestModel 的新实例.

好的,问题来了.我需要调用新的 TestModel 并为其提供依赖项,但它需要是 TestModel 的新实例.我希望 TestModel 能够将自身保存并更新回服务器,因此它依赖于来自 @angular/core 的 Http 并且它依赖于我创建的配置类,该类使用 opaqueToken CONFIG.I 注入无法弄清楚如何获取 TestModel 的新实例.这是初始文件

测试组件:

import { Component, OnInit } from '@angular/core';从'./shared/test.service'导入{TestService};从'./shared/test.model'导入{TestModel};import { TestDetailComponent } from './test-detail.component';@零件({选择器:测试组件",templateUrl: 'app/test/test.component.html',样式网址:[],提供者:[TestService],指令:[TestDetailComponent]})导出类 TestComponent 实现 OnInit {测试:TestModel[] = [];selectedTest:测试模型;构造函数(私有测试服务:TestService){};ngOnInit() {this.testService.getTestsModels().subscribe((测试) => {控制台日志(测试);this.tests = 测试});}}

测试组件模板:


                
            
发送“验证码”获取 | 15天全站免登陆