Angular2-highcharts with observables in Angular 4 project
Angular2-highcharts with observables in Angular 4 project
我正在尝试创建一个图表,该图表使用来自 http 请求的可观察对象,以下代码使用一些虚假数据,我只想用来自后端脚本的真实数据替换它们,这是我的代码:
我的app.ts:
export class MyVerticalchartComponent {
@Input() showMePartially: boolean;
options: Object;
constructor(public userService3: UserService3) {
this.options = {
title : { text : '' },
chart: { type: 'area' },
legend: { enabled: false },
credits: { enabled: false },
xAxis: { type: 'datetime',
// startOnTick: true,
// endOnTick: true,
// tickInterval: 24 * 3600 * 1000,
},
dateTimeLabelFormats: {
second: '%H:%M:%S',
minute: '%H:%M:%S',
hour: '%H:%M:%S',
day: '%H:%M:%S',
week: '%H:%M:%S',
month: '%H:%M:%S',
year: '%H:%M:%S'
},
yAxis: { min: 0,
max: 100 },
plotOptions: {
series: {
// pointStart: 0,
color: '#648e59',
fillOpacity: 0.8,
fillColor: '#648e59'
}
},
series: [{
name: 'Someone1',
data: [], // res.json
}]
};
}
public ngOnInit () {
this.userService3.getData().subscribe((data) => {
this.options.series[0].data.operating_details = data;
console.log(data);
});
}
}
我的app.html:
<chart [options]="options">
<series>
</series>
</chart>
我的 http service.ts:
export interface User3 {
data: any;
}
const usersURL = 'http://my.super.backend.script.com';
@Injectable()
导出 class UserService3 {
users3:可观察;
constructor (public http: Http) {
getData() {
const tick3$ = Observable.timer(100, 60000);
return tick3$.flatMap(() => this.http.get(usersURL)).map(res =>
res.json()).publishBehavior(<User3[]>[]).refCount();
}
}
我的 json 看起来像:
"operating_details":[[1497837618,0],[1497837738,0],[1497837858,0],
[1497837978,0],[1497838098,0],[1497838218,0],[1497838338,0],
[1497838458,0],[1497838578,0],[1497838698,0],[1497838818,0],
[1497838938,0],[1497839058,0],[1497839178,0],[1497839298,0],
[1497839418,0],[1497839538,0],[1497839658,0],[1497839778,0]]
通常您会在服务文件中定义一个方法来设置 http 请求
getData(){
return this.http.get(usersUrl)
.map(res => res.json());
}
然后在您的组件中 app.ts 您将订阅 observable。
ngOnInit(){
this.userService3.getData().subscribe(
res => {
this.options.series[0].data = res; // set series data to options object
},
err => {
// error callback
}
}
我正在尝试创建一个图表,该图表使用来自 http 请求的可观察对象,以下代码使用一些虚假数据,我只想用来自后端脚本的真实数据替换它们,这是我的代码:
我的app.ts:
export class MyVerticalchartComponent {
@Input() showMePartially: boolean;
options: Object;
constructor(public userService3: UserService3) {
this.options = {
title : { text : '' },
chart: { type: 'area' },
legend: { enabled: false },
credits: { enabled: false },
xAxis: { type: 'datetime',
// startOnTick: true,
// endOnTick: true,
// tickInterval: 24 * 3600 * 1000,
},
dateTimeLabelFormats: {
second: '%H:%M:%S',
minute: '%H:%M:%S',
hour: '%H:%M:%S',
day: '%H:%M:%S',
week: '%H:%M:%S',
month: '%H:%M:%S',
year: '%H:%M:%S'
},
yAxis: { min: 0,
max: 100 },
plotOptions: {
series: {
// pointStart: 0,
color: '#648e59',
fillOpacity: 0.8,
fillColor: '#648e59'
}
},
series: [{
name: 'Someone1',
data: [], // res.json
}]
};
}
public ngOnInit () {
this.userService3.getData().subscribe((data) => {
this.options.series[0].data.operating_details = data;
console.log(data);
});
} }
我的app.html:
<chart [options]="options">
<series>
</series>
</chart>
我的 http service.ts:
export interface User3 {
data: any;
}
const usersURL = 'http://my.super.backend.script.com';
@Injectable() 导出 class UserService3 {
users3:可观察;
constructor (public http: Http) {
getData() {
const tick3$ = Observable.timer(100, 60000);
return tick3$.flatMap(() => this.http.get(usersURL)).map(res =>
res.json()).publishBehavior(<User3[]>[]).refCount();
}
}
我的 json 看起来像:
"operating_details":[[1497837618,0],[1497837738,0],[1497837858,0],
[1497837978,0],[1497838098,0],[1497838218,0],[1497838338,0],
[1497838458,0],[1497838578,0],[1497838698,0],[1497838818,0],
[1497838938,0],[1497839058,0],[1497839178,0],[1497839298,0],
[1497839418,0],[1497839538,0],[1497839658,0],[1497839778,0]]
通常您会在服务文件中定义一个方法来设置 http 请求
getData(){
return this.http.get(usersUrl)
.map(res => res.json());
}
然后在您的组件中 app.ts 您将订阅 observable。
ngOnInit(){
this.userService3.getData().subscribe(
res => {
this.options.series[0].data = res; // set series data to options object
},
err => {
// error callback
}
}