Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 在角度参数中插入依赖项的正确方法是什么_Angular_Typescript_Dependency Injection - Fatal编程技术网

Angular 在角度参数中插入依赖项的正确方法是什么

Angular 在角度参数中插入依赖项的正确方法是什么,angular,typescript,dependency-injection,Angular,Typescript,Dependency Injection,我去年才开始学习angular,我偶然发现了angular依赖注入。情况是我需要注入依赖项,需要一些参数来实例化。目前我是这样做的: some-dependency.service.ts import { Injectable } from '@angular/core'; import { ConfigService } from 'app/services/config.service'; import { Client } from 'some-dependency'; @Injecta

我去年才开始学习angular,我偶然发现了angular依赖注入。情况是我需要注入依赖项,需要一些参数来实例化。目前我是这样做的:

some-dependency.service.ts

import { Injectable } from '@angular/core';
import { ConfigService } from 'app/services/config.service';
import { Client } from 'some-dependency';

@Injectable({
    providedIn: 'root',
    useFactory: (config:ConfigService) => new Client({
        host:config.clientURL, maxRetries: config.maxRetry
    }),
    deps: [ConfigService]
})

export class SomeDependencyService extends Client {

}
import { Injectable } from '@angular/core';
import { SomeDependencyService } from 'app/services/some-dependency.service';

@Injectable({
  providedIn: 'root'
})

export class SomeService {

    constructor( private deps: SomeDependencyService ) {}

    getSomething() {
        return this.deps.get('something');
    }
} 
另一个服务

import { Injectable } from '@angular/core';
import { ConfigService } from 'app/services/config.service';
import { Client } from 'some-dependency';

@Injectable({
    providedIn: 'root',
    useFactory: (config:ConfigService) => new Client({
        host:config.clientURL, maxRetries: config.maxRetry
    }),
    deps: [ConfigService]
})

export class SomeDependencyService extends Client {

}
import { Injectable } from '@angular/core';
import { SomeDependencyService } from 'app/services/some-dependency.service';

@Injectable({
  providedIn: 'root'
})

export class SomeService {

    constructor( private deps: SomeDependencyService ) {}

    getSomething() {
        return this.deps.get('something');
    }
} 
代码运行得很好,我可以获得
客户端
实例,而无需在
另一个服务中实例化它。ts
没有问题,而且我可以轻松地模拟它进行单元测试,但我不确定这是否是使用参数进行DI的正确方法,我也不确定这段代码是否会生成任何意外行为

虽然我可以在需要依赖关系的服务中导入依赖关系,并在本地实例化依赖关系,但如果我有很多需要依赖关系的服务(和组件),这将非常烦人


谢谢

为什么不将ConfigService注入到某个DependencyService的构造函数中?为什么不将ConfigService注入到某个DependencyService的构造函数中?