如何在角度

时间:2018-02-01 11:00:32

标签: node.js angular rest dependency-injection

我有一个返回类型为json的API响应的服务,在这个json对象中我有一个数字值列表。我可以在我的网页上输出这些值,但我想先将值存储在数组中做一些计算。我尝试了许多方法但没有成功。请指导我

API response screenshot in postman

http呼叫服务

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() { } 
} 

1 个答案:

答案 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是将项目转换为数字。如果项目无法转换为数字,则无效。