0
私は、計算されたプロパティを持つ使用可能なTypeScriptクラスとして返されるJSONオブジェクトを変換しようとしています。角2 - 計算されたプロパティを持つクラスへのJSONの解析
マッピングすると、返される値はすべて正しく取得されますが、デフォルト値があるかどうかに関わらず、オブジェクト上にあるべき計算されたプロパティは削除/無視されます。
所望の結果は、JSONをデシリアライズしている真
export class Maintenance {
Id?: number;
Name?: string;
// computed property - doesn't exist on returned data as it's a client
// property in an ngFor loop.
ShowPanel: boolean = true;
}
@Component({
moduleId: module.id,
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.scss']
})
export class HomeComponent {
ngOnInit(){
this.http.get('lookup/getstatusinformation')
.map(res => <Maintenance[]>res.json())
.subscribe(res => this.listMaintenance = res);
}
}
res.json()はJSON形式の文字列のみを返します。インターフェイスを使用してPOJOにマップすることはできますが、クラスインスタンスの配列を作成する場合は、クラス –
@Jotaのコンストラクタメソッドを使用して、.json()戻り値およびインスタンスの新しいオブジェクトをループする必要があります。 Toledoの作者は、.map関数の保守タイプの配列としてjsonデータをキャストします。 – YD1m
TypeScriptは何もキャストしません。あなたは、 'json()'からの戻り値が、 'Maintenance'インスタンスではないと主張しています*。それはただの目的です。 'Maintenance'インスタンスが必要な場合は、' new'などを使用してインスタンスを作成する必要があります。 – cartant