Я получаю сложный объект, отправленный с моего внутреннего сервера Express, используя res.json
.(Список участников, которые зарегистрировались).
На внешнем интерфейсе я хотел бы преобразовать ответ json в объект, который я могу обработать в своем шаблоне.Разве я не могу просто вызывать JSON.parse () для ответа json?
Я видел несколько предложенных решений, которые требуют, чтобы вызов HttpClient get
имел универсальный тип возвращаемого объекта, то есть get<MyObj>
.(например, в этой статье Angular Http Call ).Есть ли способ сделать это без предварительного указания типа возврата из вызова get
?(Я бы хотел сохранить реализацию внешнего интерфейса как можно более легкой и гибкой и выполнить все определения данных во внутреннем интерфейсе, а затем использовать внешний интерфейс для «чтения» внутренней структуры данных. Данныеструктура довольно сложная и длинная, и это позволило бы сэкономить много работы, если бы я мог избежать повторения определения данных как на задней, так и на внешней стороне).
К сожалению, я еще не нашел пути, так как, например, редактор говорит мне, что JSON.parse ожидает строковый параметр, в то время как мой вызов HttpClient возвращает Object.
Вот кодУ меня так далеко:
member.service.ts:
constructor(private http: HttpClient) { }
ngOnInit() {
this.getList();
}
getList(): Observable<any> {
return this.http
.get(`${this.host_url}list`,{responseType: 'json'})
}
register.component.ts
users$: Observable<Object>;
getUsers() {
this.users$ = this.member.getList();
}
register.component.html
<ul>
<ng-container *ngFor="let user of users$ | async ">
<li>
{{user | json}} <-- This gives me a string. If I use {{ user }} without the json pipe, I get an object, but can't reference its properties.
</li>
</ng-container>
</ul>
В настоящее время вмой цикл ngFor*
, я не могу получить объект user
и ссылаться на его свойства (то есть user.authData[0].username
).Как я могу изменить свой код, чтобы иметь возможность ссылаться на свойства user
в шаблоне?Нужно ли заранее указывать тип данных для вызова get
, или есть другой способ?
EDIT (1): Вот некоторые примеры данных, возвращаемых {{ user | json }}
pipe:
{ "_id": "5cf1b7792ecf136bd4cddebf", "authData": [], "nameData": [], "emailData": [], "phoneData": [], "addressData": [], "companyData": [], "idData": [], "photoData": [], "memberData": [], "creditCardData": [], "__v": 0 }
{ "_id": "5cf207038e3f2551dcf4c803", "authData": [], "nameData": [], "emailData": [], "phoneData": [], "addressData": [], "companyData": [], "idData": [], "photoData": [], "memberData": [], "creditCardData": [], "__v": 0 }
{ "_id": "5d6ff6ac7046a519403c801f", "authData": [], "nameData": [], "emailData": [], "phoneData": [], "addressData": [], "companyData": [], "idData": [], "photoData": [], "memberData": [], "creditCardData": [], "__v": 0 }
{ "_id": "5d7015dddba7384d64540571", "authData": [], "nameData": [], "emailData": [], "phoneData": [], "addressData": [], "companyData": [], "idData": [], "photoData": [], "memberData": [], "creditCardData": [], "__v": 0 }
{ "_id": "5d7061fd767c8c41202f49b7", "authData": [], "nameData": [], "emailData": [], "phoneData": [], "addressData": [], "companyData": [], "idData": [], "photoData": [], "memberData": [], "creditCardData": [], "__v": 0 }
{ "_id": "5d71b9b1fa4fb10afc346323", "authData": [], "nameData": [], "emailData": [], "phoneData": [], "addressData": [], "companyData": [], "idData": [], "photoData": [], "memberData": [], "creditCardData": [], "__v": 0 }
{ "_id": "5d71bcd2fa4fb10afc346332", "authData": [], "nameData": [], "emailData": [], "phoneData": [], "addressData": [], "companyData": [], "idData": [], "photoData": [], "memberData": [], "creditCardData": [], "__v": 0 }
{ "_id": "5d71bf76fa4fb10afc34633e", "authData": [], "nameData": [], "emailData": [], "phoneData": [], "addressData": [], "companyData": [], "idData": [], "photoData": [], "memberData": [], "creditCardData": [], "__v": 0 }
{ "_id": "5d71ce7d52a93e0700f2c052", "authData": [], "nameData": [], "emailData": [], "phoneData": [], "addressData": [], "companyData": [], "idData": [], "photoData": [], "memberData": [], "creditCardData": [], "__v": 0 }