0
と混合依存性:角度1と活字体:私はこのような活字体クラスを持つクラスのコンストラクタでのプロパティ
- それは角度モジュール
- ではありませんが
personName
が上に使用することはできませんカスタムフィルタであることを前提としていこの例では、ビュー/テンプレート
コード:
export class Person {
private $filter;
private name: string;
private sureName: string;
constructor($filter: ng.IFilterService, name: string, sureName: string) {
this.$filter = $filter;
this.name = name;
this.sureName = sureName;
}
public getName(): string {
return this.$filter('personName')(this.name, this.sureName);
}
}
これは、このようなコントローラで使用することができます。
export class PeopleController {
private $filter: ng.IFilterService;
private person1 = new Person(this.$filter, 'Joe', 'Smith');
private person2 = new Person(this.$filter, 'John', 'Doe');
// ...
// private person100 = new Person(this.$filter, ...)
constructor($filter: ng.IFilterService) {
this.$filter = $filter;
}
}
angular.module('myApp').controller('PeopleController', PeopleController);
はそれが$filter
なしinitedすることができますしPerson
クラスを書き換えることは可能ですか?言い換えると、Person
クラスを依存性注入を伴うAngularファクトリとして記述し、このファクトリをコントローラに注入してインスタンスを作成できますか?
export class PeopleController {
private PersonFactory: Person;
private person1 = new PersonFactory('Joe', 'Smith');
private person2 = new PersonFactory('John', 'Doe');
// ...
// private person100 = new Person(...)
constructor(PersonFactory: Person) {
this.PersonFactory = PersonFactory;
}
}
angular.module('myApp').factory('PeopleFactory', People);
angular.module('myApp').controller('PeopleController', PeopleController);
ありがとうございました!私がそれを使用すると、私はエラー 'angular.js:4442 Uncaught TypeError:PersonFactoryは関数ではありません.'を持っています。どのようにそれを解決するための任意のアイデア? –
@Akarienta工場定義でタイプミスがありました。今すぐ修正する必要があります。 – toskv