Это не прямой ответ на вопрос, но если вы читаете эту ТАК по моей причине, это может помочь ...
Допустим, вы используете ng2-translate и действительно хотите, чтобы он был у вашего User.ts
класса. Вы сразу же думаете, что нужно использовать DI, чтобы вставить его, в конце концов, вы делаете Angular. Но это своего рода чрезмерное обдумывание, вы можете просто передать его в свой конструктор или сделать его общедоступной переменной, которую вы установили из компонента (где вы, вероятно, сделали DI).
например:
import { TranslateService } from "ng2-translate";
export class User {
public translateService: TranslateService;
}
затем из некоторого связанного с пользователем компонента, который внедрил TranslateService
addEmptyUser() {
let emptyUser = new User("", "");
emptyUser.translateService = this.translateService;
this.users.push(emptyUser);
}
Надеюсь, это поможет тем, кто вроде меня собирался писать намного сложнее для поддержки кода, потому что иногда мы слишком умны =]
(ПРИМЕЧАНИЕ: причина, по которой вы можете захотеть установить переменную вместо того, чтобы делать ее частью вашего метода конструктора, заключается в том, что у вас могут быть случаи, когда вам не нужно использовать службу, поэтому всегда требуется передавать ее, что означало бы введение дополнительного импорта / код, который на самом деле никогда не используется)