Мне трудно понять, как управлять данными, когда они возвращаются из Http-запроса в Angular 7 +
Служба для получения каждого местоположения выглядит следующим образом:
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
import { Base } from '../interfaces/base';
import { map } from 'rxjs/operators';
@Injectable({
providedIn: 'root'
})
export class BaseService {
base$: Observable<Base[]>;
constructor(private http: HttpClient) { }
getAllBases() {
const token = localStorage.getItem('access_token');
return this.http.get(
'https://megaphone-test.herokuapp.com/api/base/getAllBases',
{
headers: new HttpHeaders().append('x-access-token', token)
}
);
}
}
Я потребляю это в таком компоненте, как этот (сейчас это огромный сбой). Для краткости я не отправляю весь документ, но мясо и картошка прямо здесь:
export class TreeComponent implements OnInit {
@Input() node: string;
base$: Base[];
loading: boolean;
constructor(public baseService: BaseService) { }
ngOnInit() {
this.loading = true;
this.baseService.getAllBases()
.subscribe(
res => {
this.base$ = res['bases'];
}
);
}
}
Если я консоль,Ответ и просмотр в консоли, я получаю два массива, спрятанных внутри одного родительского массива.Поэтому, конечно, res ['base'] выглядит примерно так:
(2) [{…}, {…}]0: {id: 1, basePhoneNumber: "+18442367381", baseName: "Test AFB 1", bandwidthUserId: "u", bandwidthApiToken: "t", …}1: {id: 2, basePhoneNumber: "+12345678908", baseName: "Test AFB 2", bandwidthUserId: "u", bandwidthApiToken: "t", …}length: 2__proto__: Array(0)
Так что я пытаюсь понять, как я могу взять их и поместить данные во что-то, что сделало бы эту работу?
<ng-container [clrLoading]="loading">
<clr-tree-node *ngFor="let base of base$">
<!-- {{ base?.baseName }} -->
{{ base.baseName }}
</clr-tree-node>
</ng-container>