1

我正在尝试获取某个类的构造函数参数,但是 <> 获取了一个带有未定义元素的数组。

对于测试,我使用服务 Example2Services 和 ExampleService

Example2Service.ts

import { ExampleService } from './example.service';


   export class Example2Service {
      constructor(private es1: ExampleService) {}

      getValue() {
        return "some value2";
      }
    }

示例服务.ts

import { Example2Service } from './example2.service';

export class ExampleService {
    constructor(private es2: Example2Service) {    }

    getValue() {
        return this.es2.getValue();
    }
    getString() {
        return "1"
    }
}

在这个函数中,我发送一个 Example2Service

private resolve(target: Type): Object | Function {

    let tokens = Reflect.getMetadata('design:paramtypes', target) 
    ...
}

调试代码,我得到了这个令牌变量

在此处输入图像描述

试图了解行为,我尝试直接从某些类中获取参数

import {Example2Service} from '../../exaple2.service.ts';
import {ExampleService} from '../../exaple.service.ts';

private resolve(target: Type): Object | Function {

    let tokensA = Reflect.getMetadata('design:paramtypes', Example2Service)
    let tokensB = Reflect.getMetadata('design:paramtypes', ExampleService);
    let tokens = Reflect.getMetadata('design:paramtypes', target);
    ...
}

调试这个案例我得到了这个,发送一个 Example2Service 来解析函数。现在令牌是一个数组,里面有一个类。请注意,在导入 Example2Service 和 ExampleService 时会发生这种情况,但是在更改导入顺序时,行为会发生变化

在此处输入图像描述


编辑

我发现当依赖关系之间存在循环时会发生这种情况

4

0 回答 0