我正在尝试获取某个类的构造函数参数,但是 <> 获取了一个带有未定义元素的数组。
对于测试,我使用服务 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 时会发生这种情况,但是在更改导入顺序时,行为会发生变化
编辑
我发现当依赖关系之间存在循环时会发生这种情况