我有一个返回类型为json的API响应的服务,在这个json对象中我有一个数字值列表。我可以在我的网页上输出这些值,但我想先将值存储在数组中做一些计算。我尝试了许多方法但没有成功。请指导我
API response screenshot in postman
getTriggerCount():Observable<Trigger>{
return this.http.get(this.triggersUrl).pipe(
flatMap(count => transformAndValidate(Trigger, count)))
@Component({
selector: 'app-triggers',
templateUrl: './triggers.component.html',
styleUrls: ['./triggers.component.css']
})
export class TriggersComponent implements OnInit {
@Input() trigger: Trigger;
constructor(private triggerService: DbApiService) { }
ngOnInit() {
this.getTriggerCount();
}
getTriggerCount(){
this.triggerService.getTriggerCount() .subscribe(trigger => this.trigger = trigger);
}
}
触发类
import { IsNumber, IsNotEmpty, IsString } from 'class-validator';
export class Trigger {
@IsNotEmpty()
@IsNumber()
result: number[];
constructor() { }
}
答案 0 :(得分:0)
问题在于您的服务,它应该类似于以下
getTriggerCount():Observable<any>{
return this.http.get(this.triggersUrl).map(res => res.json());
}
使用新的HttpClient
它应该是这样的:
getTriggerCount():Observable<any>{
return this.http.get<any>(this.triggersUrl);
}
在组件中使用它。您@Input()
也不需要trigger
。您的Trigger
课程也因您正在做的事情而变得复杂。见下文
public trigger: any;
getTriggerCount(){
this.triggerService.getTriggerCount()
.subscribe(trigger => this.trigger = trigger);
}
然后,这将在trigger
对象上产生响应。如果您想要使用该对象,比如说,将所有数字加在一起,您将执行以下操作:
addArray() {
let sum = this.trigger.reduce((a, b) => +a + +b, 0);
}
+a
和+b
是将项目转换为数字。如果项目无法转换为数字,则无效。