в настоящее время я использую $inject
для ввода компонентов в мой контроллер:
export class MyClass{
public static $inject = [
"$depedencyA",
"$depedencyB",
"$depedencyC"
];
constructor(
private $depedencyA: IDependencyA,
private $depedencyB: IDependencyB,
private $depedencyC: IDependencyC
)
{
}
}
Это прекрасно работает при создании экземпляра MyClass
, например let myClassInstance=new MyClass();
Но что если яхотите передать зависимость, которая не может быть напрямую введена самим классом?
let myClassInstance=new MyClass(anotherDependency);
Ну, конечно, мне нужно расширить MyClass
, чтобы принять этот параметр в конструкторе
constructor(
private $depedencyA: IDependencyA,
private $depedencyB: IDependencyB,
private $depedencyC: IDependencyC,
private $anotherDependency: any
)
{
}
.. но тогда внедрение больше не может работать, потому что массив параметров больше не соответствует фактической сигнатуре конструктора.Как мне обойти это?