Я пытаюсь создать динамический компонент, который будет принимать URL-адрес API, а intervalPeriod говорит «x» минуту в качестве входных данных и извлекать данные каждые x минут, которые передаются в качестве входных данных.
Вот мой stackblitz, который я пробовал, следуя всем ответам на stackoverflow.
Мне нужно показать данные в первый раз в 0 секунд, и после этого он должен извлекать данные каждые x секунд или минут. Это выглядит правильно или что мне здесь не хватает?
https://stackblitz.com/edit/angular-wzvwmy?file=src%2Fapp%2Fdata-emitter%2Fdata-emitter.component.ts
import { Component, Input, OnInit, Output } from "@angular/core";
import { interval } from "rxjs";
import { flatMap, map } from "rxjs/operators";
import { Http } from "@angular/http";
@Component({
selector: "app-data-emitter",
templateUrl: "./data-emitter.component.html",
styleUrls: ["./data-emitter.component.css"]
})
export class DataEmitterComponent implements OnInit {
@Output() data: any;
@Input() apiUrl: any;
@Input() intervalPeriod: number;
minutes: number;
constructor(private http: Http) {}
ngOnInit() {
this.minutes = this.intervalPeriod * 60 * 1000;
}
subscribes$ = interval(this.minutes)
.pipe(flatMap(() => this.getData()))
//this.getData()
.subscribe(data => {
this.data = data;
console.log(this.data);
});
getData() {
return this.http
.get(this.apiUrl)
.pipe(map((response: any) => response.json()));
}
}