Каков наилучший подход к созданию «вложенных» моделей?
В настоящее время я получил сервис, который загружает данные для каждой модели.Проблема в том, что у меня есть модели, которые ссылаются на другие модели, которые я все еще хочу загрузить через соответствующие службы, чтобы использовать логику службы.
ModelA:
export class ModelA{
id: number;
ownerId: number;
owner: ModelB;
constructor(obj?: any) {
Object.assign(this, obj);
//Bind here?
}
}
В службе ModelA:
public load(id: number | string) {
this.http.get(`${this.baseUrl}/${id}`).pipe(
catchError(this.handleError),
map(res => new ModelA(res))
).subscribe(data => {
//Bind here?
});
}
В настоящее время мой веб-API возвращает вложенные данные, поэтому работает связывание ModelB внутри ModelA.Проблема в том, что я хочу, чтобы служба выполняла привязку для ModelB, чтобы подписаться / обнаружить изменения в объекте.
Я полагаю, что могу сделать это двумя способами.
- В Service для ModelA функция загрузки связывает ModelB, вызывая ее службу.
- В конструктореМодель А.
Есть ли другой способ сделать это?Это пример, и у меня есть модели, относящиеся к 5-6 другим моделям, и если я буду использовать этот способ, в подписке будет много кода.Используя конструктор в ModelA, и я не могу получить ссылку на службу (для ModelB) там, причину инъекции, а также это кажется неэффективным?