Ваш метод getData()
должен возвращать Observable, потому что выборка данных асинхронна.
В вашем компоненте вы можете подписаться на это Observable и отображать данные, если вы их получите.
@Component({
selector: 'app-some-data',
templateUrl: './some-data.component.html',
styleUrls: ['./some-data.component.css']
})
export class SomeDataComponent implements OnInit {
data: any[];
constructor(private api: ApiService) { }
ngOnInit() {
this.api.getData().subscribe(data => this.data = data);
}
}
<div>
<div *ngFor="let item of data">{{item | json}}</div>
</div>
@Injectable({
providedIn: 'root',
})
export class ApiService {
// constructor, etc.
getData(): Observable<any[]> {
return this.http.post<any[]>('http://localhost/api/Acc/GetData', "");
}
}
Вы также можете подписаться на наблюдаемое в html через канал async
.
@Component({
selector: 'app-some-data',
templateUrl: './some-data.component.html',
styleUrls: ['./some-data.component.css']
})
export class SomeDataComponent implements OnInit {
data: Observable<any[]>;
constructor(private api: ApiService) { }
ngOnInit() {
this.data = this.api.getData();
}
}
<div *ngIf="(data | async) as items">
<div *ngFor="let item of items">{{item | json}}</div>
</div>