我目前正在使用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。我在这里做错了吗?
答案 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