ich ein Typoskript Klasse schaffen, in dem Konstruktor ich eine normale und eine Winkel injizierten Argument:Wie neues Objekt in Typoskript mit Winkel injizierten Parameter
export class MyClass {
private translation:string;
public static $inject = ['$filter'];
constructor(name:string, $filter: ng.IFilterService) {
this.translation = filter('translate')('code').toString();
}
}
Wenn ich jetzt ein Objekt erstellen möchten , wie kann ich es tun?
new MyClass('myname'); //won't compile because there are too few parameters
new MyClass('myname', filter); //makes no sense since I want to inject it
Auch wenn ich schrieb $filter?
es wird nicht funktionieren, weil sie den Umfang nicht erkennen, und es wird nicht definiert sein.
Also, wie kann ich das zum Funktionieren bringen?
Mein Ansatz
Lassen Sie sich sagen, dass ich in einer anderen Klasse bin, in dem ich ein Objekt von MyClass erstellen möge. Der folgende Code wird funktionieren, aber ich mag die Idee nicht, $ filter auch in dieser Klasse zu injizieren, da er sie nicht benötigt.
export class ClassUsingTheOtherClass {
private filter:ng.IFilterService;
public static $inject = ['$filter'];
constructor($filter: ng.IFilterService) {
this.filter = $filter;
}
doThings() {
var clazz = new MyClass('myName', this.filter);
}
}
Ich würde eher so etwas wie diese var clazz = new MyClass('myName');
nennen und mit $filter
automatisch als Abhängigkeit in MyClass injiziert. Ist das überhaupt möglich?
Wann würden Sie diese 'neue MyClass ('myname') nennen?' '? Es scheint, als würde es nie aufgerufen werden, weil Sie eine 'filter'-Instanz benötigen, andernfalls wird die Klasse eventuell auf einen undefinierten Fehler stoßen. Was ist der Zweck von 'myname' Parameter? Wie könnte das jemals injiziert werden? Diese Definition würde mit Angular nicht funktionieren. – Igor
Ich schrieb die Frage um. Schau mal. myname ist nur die Zeichenfolge, die mit dem angular-translate-Filter übersetzt wird. Und ich möchte nicht, dass es eingespritzt wird, weil ich es weitergeben will, wenn ich es übersetzen muss. – iberbeu