如何将JSON对象参数分配给typescript中的某些值?

时间:2017-03-14 13:24:55

标签: angular typescript

我目前正在使用angular 2.0。我有一个像这样的方法返回的json对象。

this.propertiesService.addSeriesToChart(this.testId).subscribe(result => {
        this.result = result;
        });

addSeriesToChart()正在服务中,它返回json对象。

在返回的结果中,我必须将一些空值分配给几个默认值,我试着

if (this.result != undefined && this.result != null) {
  this.result.json().channel.mark = "ABC"

但是json对象中的mark参数似乎没有设置“ABC”,它始终保持为null。我在这里做错了吗?

2 个答案:

答案 0 :(得分:0)

假设您在组件类中有一个变量data,您想要分配来自json的数据。您可以使用output属性发出订阅时收到的数据。

你可以这样做:

import { Component, Output, EventEmitter } from '@angular/core';

@Component({
  selector: 'user',
  template: '<div>Hi</div>'
})

export class AppComponent{
data:Data;
@Output() dataOutput:EventEmitter<Data> =
new EventEmitter<Data>()

this.propertiesService.addSeriesToChart(this.testId).subscribe(result => {
            this.data = result.json();
            this.dataOutput.emit(this.data);
            });
}

此处Data将是包含变量的模型,您可以将json映射到:

export class Data{
   id:number;
   name:string;
}

现在,为了在您的应用中的其他位置使用上述AppComponent,您可以绑定该事件:

<user (dataOutput)="receiveData($event)"></user>



 export class PageComponent {
     datareceived:Data;
      constructor(){}
    receiveData(data){
         this.datareceived=data;
    }

     getUIData(value: any) {
            for (var name in value.selected) { 
               if (this.datareceived!= undefined && this.datareceived!= null) { 
                  if (name == 'mark') 
                     //do whatever you feel like 
                 } 
              } 
          }
    }

我认为这将解决这个问题。我知道这不是你的json的解决方案,但它是一个简单的方法来实现它。试试吧。

答案 1 :(得分:0)

首先,当您发送响应时,您可以在服务时使用 result.JSON()将对象转换为JSON。然后当您收集该JSON对象时,必须将其转换为 this.result = JSON.stringify(结果)它适用于mi