Привет. Я уже некоторое время разбираюсь с кодом. У меня есть обходной путь, но я чувствую, что это не правильно.Любая помощь приветствуется.
Я использую шаблон, показанный здесь введите описание ссылки здесь
Я пытаюсь реализовать один и тот же универсальный интерфейс дважды для двух разных моделей, гдеодин вложен внутрь другого, который является представителем вложенного объекта JSON.Я использовал шаблон адаптера.вот где я нахожусь:
import { Injectable } from '@angular/core';
import { Adapter } from './core/adapter';
import { map } from 'rxjs/operators';
export class MatchPoint {
constructor(
public matchFlag: number,
public maxIndividualScore: number,
public inquiry: string,
public mrc: number,
public reason3: number,
public reason2: number,
public reason1: number,
public numOfResults: number,
public trans_id: string,
public searchResult: SearchResult[]
) { }
}
export class SearchResult {
constructor(
public jns: string,
public city: string,
public totalScorePrint: string,
public cpin_count_i: string,
public name: string,
public ppbin: string,
public hdistph: string,
public phones: string,
public searchlevel: string,
public jas: string,
public hdisttax: string,
public cpbin: string,
public state: string,
public street: string,
public totalScoreDecay: string,
public ns1: string,
public ns: string,
public lvid: string,
public zip5: string,
public mrc: string
) { }
}
@Injectable(
{ providedIn: 'root' }
)
export class MatchPointAdapter implements Adapter<MatchPoint>,
**Adapter<SearchResult>** {
adapt(item: any): MatchPoint {
return new MatchPoint(
item.matchFlag,
item.maxIndividualScore,
item.inquiry,
item.mrc,
item.reason3,
item.reason2,
item.reason1,
item.numOfResults,
item.trans_id,
this._adapt(item.searchResult) // need to loop and use the adapt
);
}
_adapt(item: any[]): SearchResult[] {
return new SearchResult(
item.jns,
item.city,
item.totalScorePrint,
item.cpin_count_i,
item.name,
item.ppbin,
item.hdistph,
item.phones,
item.searchlevel,
item.jas,
item.hdisttax,
item.cpbin,
item.state,
item.street,
item.totalScoreDecay,
item.ns1,
item.ns,
item.lvid,
item.zip5,
item.mrc
);
}
}
Вот обходной путь, который у меня есть:
export class MatchPointAdapter implements Adapter<MatchPoint> {
adapt(item: any): MatchPoint {
return new MatchPoint(
item.matchFlag,
item.maxIndividualScore,
item.inquiry,
item.mrc,
item.reason3,
item.reason2,
item.reason1,
item.numOfResults,
item.trans_id,
this.getSearchResults(item.searchResult)
);
}
getSearchResults(searchResult: any[]): SearchResult[] {
return searchResult.map((item: any) =>
new SearchResult(
item.jns,
item.city,
item.totalScorePrint,
item.cpin_count_i,
item.name,
item.ppbin,
item.hdistph,
item.phones,
item.searchlevel,
item.jas,
item.hdisttax,
item.cpbin,
item.state,
item.street,
item.totalScoreDecay,
item.ns1,
item.ns,
item.lvid,
item.zip5,
item.mrc
));
}
}
Спасибо