Я унаследовал проект angular, в котором экземпляры сущностей в стиле java имитируются с использованием простых javascript объектов.
Вот как реализована ложная инъекция:
export class MyEntity {
private http: Http;
private someObservable: Observable<any>;
init(dependencies, ...) {
this.http = dependencies.http;
this.someObservable = dependencies.someObservable;
this.someObservable.subscribe((res) => { ...unimportant logic... });
}
}
тогда в DI включили код:
entity = new MyEntity();
entity.init({ http: this.http, someObservable: this.someObservable, ... }, ...);
Мои вопросы:
Может ли http "неисправность" вот так? Я беспокоюсь, что он может работать не полностью (CD, перехватчики или события могут не сработать. Et c). Прямо сейчас это не показывает никаких проблем, но, возможно, код просто недостаточно хорошо протестирован.
Есть ли какой-нибудь способ для удобного выпуска созданных здесь подписок? Обычно я бы позаботился об этом в хуке onDestroy, но это не доступно для простых классов. Некоторые из наблюдаемых здесь непрерывны, не завершатся после первого выброса.
Рефакторинг займет довольно много времени, поэтому, если есть безопасное решение, которое может быть предпочтительным, даже если оно относительно некрасиво.