在打字稿中将嵌套对象模型作为请求参数传递
Pass nested object model as request paramters in typescript
我正在尝试使用打字稿中的模型结构传递请求参数。如果对象没有嵌套,我可以做。但如果对象是嵌套数组,如下所示,我无法分配值并作为请求参数传递。
如果有人有任何建议,请告诉我。
提前致谢!
export class exampleModel{
products: [
{
name: string,
address:string,
product_sizes: [
{
quntity: number,
price: number,
id: [
number
]
}
]
}
]
}
创建这样的模型后,我正在初始化模型如下
productRequestObject : exampleModel = <exampleModel>{}
然后尝试为其赋值
this.productRequestObject.products[0].name = sessionStorage.getItem('name')
这里我得到的错误是 Cannot read property '0' of undefined
如果我遗漏了什么,请告诉我!
您初始化了一个空对象。尽管您知道该结构,但它目前没有字段 projects
。一种正确的方法是预定义接口和模型。然后根据它们的嵌套结构实例化并 assemble 它们就像拼图一样。
在 interfaces.ts
中定义您的接口
export interface IProductSize {
quantity: number;
price: number;
id: Array<number>;
}
export interface IProduct {
name: string;
address:string;
product_sizes: Array<IProductSize>;
}
export interface IRequest {
products: Array<IProduct>;
}
export interface IExampleModel {
requests: Array<IRequest>;
}
有了这个,在models.ts
中定义你的类
export class ProductSize implements IProductSize {
constructor(
public quantity: number,
public price: number,
public id: Array<number>){}
}
export class Product implements IProduct {
constructor(
public name: string,
public address:string,
public product_sizes: Array<IProductSize>){}
}
export class Request implements IRequest {
constructor(public products: Array<IProduct>){}
}
export class ExampleModel implements IExampleModel {
constructor(public requests: Array<IRequest>){}
}
现在你可以继续assemble你的对象了。
let productSize: IProductSize = new ProductSize(0, 0, []);
let product: IProduct = new Product('', '', [productSize]);
let request: IRequest = new Request([product]);
let productRequestObject: IExampleModel = new ExampleModel([request]);
终于可以访问该字段了
this.productRequestObject.products[0].name = sessionStorage.getItem('name');
在 Angular 中,您应该这样做。这样您就非常灵活,并且可以完全控制嵌套构造的每个级别。
我正在尝试使用打字稿中的模型结构传递请求参数。如果对象没有嵌套,我可以做。但如果对象是嵌套数组,如下所示,我无法分配值并作为请求参数传递。 如果有人有任何建议,请告诉我。 提前致谢!
export class exampleModel{
products: [
{
name: string,
address:string,
product_sizes: [
{
quntity: number,
price: number,
id: [
number
]
}
]
}
]
}
创建这样的模型后,我正在初始化模型如下
productRequestObject : exampleModel = <exampleModel>{}
然后尝试为其赋值
this.productRequestObject.products[0].name = sessionStorage.getItem('name')
这里我得到的错误是 Cannot read property '0' of undefined
如果我遗漏了什么,请告诉我!
您初始化了一个空对象。尽管您知道该结构,但它目前没有字段 projects
。一种正确的方法是预定义接口和模型。然后根据它们的嵌套结构实例化并 assemble 它们就像拼图一样。
在 interfaces.ts
export interface IProductSize {
quantity: number;
price: number;
id: Array<number>;
}
export interface IProduct {
name: string;
address:string;
product_sizes: Array<IProductSize>;
}
export interface IRequest {
products: Array<IProduct>;
}
export interface IExampleModel {
requests: Array<IRequest>;
}
有了这个,在models.ts
export class ProductSize implements IProductSize {
constructor(
public quantity: number,
public price: number,
public id: Array<number>){}
}
export class Product implements IProduct {
constructor(
public name: string,
public address:string,
public product_sizes: Array<IProductSize>){}
}
export class Request implements IRequest {
constructor(public products: Array<IProduct>){}
}
export class ExampleModel implements IExampleModel {
constructor(public requests: Array<IRequest>){}
}
现在你可以继续assemble你的对象了。
let productSize: IProductSize = new ProductSize(0, 0, []);
let product: IProduct = new Product('', '', [productSize]);
let request: IRequest = new Request([product]);
let productRequestObject: IExampleModel = new ExampleModel([request]);
终于可以访问该字段了
this.productRequestObject.products[0].name = sessionStorage.getItem('name');
在 Angular 中,您应该这样做。这样您就非常灵活,并且可以完全控制嵌套构造的每个级别。