如何从api访问JSON数据响应我正在使用angular6

时间:2019-09-18 11:28:37

标签: json typescript angular6 angular-json

我在这里使用angualar6和。我正在从API提取数据,并在打字稿中创建了模型类。我不知道我在哪里做错。我是新来的。

 order.model.ts

 export interface OrderModel {
  orderList: OrderList[];
  orderSearch: OrderSearch;
  role: { categoryId: string; categoryTitle: string };
}

export interface OrderSearch {
  userId: string;
  userRoleId: string;
}

export interface OrderList {
  orderId: string;
  orderMode: {
    categoryId: string;
    categoryTitle: string;
  };
  orderStatus: {
    ATVP: string;
    creator: { createDate: string };
    status: {
      categoryId: string;
      categoryTitle: string;
    };
    statusId: string;
    statusParentId: string;
  };
  payment: {
    paymentAmount: number;
    paymentId: string;
    paymentMode: {
      categoryId: string;
      categoryTitle: string;
    };
    paymentStatus: {
      statusId: string;
      statusParentId: string;
      status: {
        categoryId: string;
        categoryTitle: string;
      };
    };
    payeePaymentInfo: {
      paymentInfo: string;
      paymentMode: {
        categoryId: string;
        categoryTitle: string;
      };
    }[];
  };
  creator: {
    createDate: string;
    creatorId: string;
  };
  deliveryInfo: {
    deliveryStatus: {
      ATVP: string;
      creator: { createDate: string };
      status: { categoryId: string; categoryTitle: string };
      statusId: string;
      statusParentId: string;
    };
  };
  orderPricing: {
    price: number;
    priceId: string;
    priceText: string;
    priceType: { categoryId: string; categoryTitle: string };
    pricingRef: string;
    quantity: number;
    rentUnit: { categoryId: string; categoryTitle: string };
    statusId: string;
    unit: { categoryId: string; categoryTitle: string };
  };
}

这是我的component.ts文件

@Component({
  selector   : 'app-item-detail',
  templateUrl: './item-detail.component.html',
  styleUrls  : ['./item-detail.component.scss']
})
export class ItemDetailComponent implements OnInit {
  id: number;
  price: number;
  orderDetail: OrderModel;
  ordersList:OrdersList[]=[];
  orderList:OrderList[]=[];




  message:string;
  constructor(private campusservice: OrdersService, private _campusHaatService: OrdersService, private route: ActivatedRoute) {
    this.route.params.subscribe((r) => this.id = r['id']);
  }

  ngOnInit() {

    this._campusHaatService.currentMessage.subscribe(message => this.message = message);
    console.log(this.price,'price')
    console.log(this.id, 'id');
//TODO Api calling Order by Id
    const data = {
      "orderLoadType": 3,
      "userId": "",
      "creator": {
        "id": "5794",
        "APIKey": "63923f49e5241343",
        "createDate": "2019-03-22 01:56:25.0",
        "creatorId": "402"
      },
      "start":0,
      "limit":10,
      "orderId":"1758",
      "loadType": 0
    }

    this.campusservice.orderDetail(data).subscribe((r) => {
      // console.log(r, 'detail');
      console.log('detail',r);
      this.orderDetail = r['detail'];
      this.ordersList = r['ordersList'];
      this.orderDetail.ordersList.

    });

  }


getOrderMode() {

  return this.orderDetail.ordersList.ordermode.CategoryTitle;

}

}

Order.Service.ts


@Injectable()
export class OrdersService extends CampusHaatAdminService {

  private messageSource = new BehaviorSubject('');
  currentMessage = this.messageSource.asObservable();


  constructor(public http: HttpClient,
              private router: Router) {
    super(http);
  }




  orderList(data): Observable<OrderModel[]> {
    data = {
      ...data,
      'orderLoadType': 3
    };
    return this.post('/orders/listOrders', false, data)
      .pipe(map(res => res['ordersList']));
  }

  orderDetail(data) {
    return this.post('/orders/listOrders', false
      , data);
  }

}

API响应


{
    "type": "ordersResponse",
    "baseResponse": {
        "message": "Order retrieved successfully!",
        "statusCode": "200"
    },
    "ordersList": [
        {
            "orderList": [
                {
                    "adsList": [],
                    "avgTime": 0,
                    "buyer": {...},
                    "creator": {...},
                    "deliveryInfo": {...},
                    "expecTimeLowerLimit": 0,
                    "expecTimeUpperLimit": 0,
                    "maxTime": 0,
                    "minTime": 0,
                    "orderId": "1758",
                    "orderMode": {
                        "message": {
                            "actions": [],
                            "msgSize": 0
                        },
                        "categoryId": "621",
                        "categoryList": [],
                        "categoryTitle": "Deliver"
                    },
                    "orderPricing": {...},
                    "orderStatus": {...},
                    "payment": {...},
                    "persons": [...],
                    "productList": []
                }
            ],
           "orderSearch":{...},
            "role":{...}
         }
    ]
}

我想从api的订购模式中显示类别标题 我是新手。请帮帮我。 预先感谢。

1 个答案:

答案 0 :(得分:0)

根据您的代码和api响应,我认为您想要这样的东西



@Component({
  selector   : 'app-item-detail',
  templateUrl: './item-detail.component.html',
  styleUrls  : ['./item-detail.component.scss']
})
export class ItemDetailComponent implements OnInit {
  id: number;
  price: number;
  orderDetail: OrderModel;
  orderList:OrderList[]=[];
  orderId:number;
  orderStatus:string;
  orderMode:string;
  orderAmount:number;
  orderDate:string;


  constructor(private campusservice: OrdersService, private _campusHaatService: OrdersService, private route: ActivatedRoute) {
    this.route.params.subscribe((r) => this.id = r['id']);
  }

  ngOnInit() {


    // console.log(this.price,'price')
    console.log(this.id, 'id');
//TODO Api calling Order by Id
    const data = {
      "orderLoadType": 3,
      "userId": "",
      "creator": {
        "id": "5794",
        "APIKey": "63923f49e5241343",
        "createDate": "2019-03-22 01:56:25.0",
        "creatorId": "402"
      },
      "start":0,
      "limit":10,
      "orderId":"",
      "loadType": 0
    }

    this.campusservice.orderDetail(data).subscribe((r) => {
      this.orderList = r['ordersList'][0]['orderList'];
      let orderData = this.orderList.filter((order)=>order.orderId==this.id.toString());

      if(orderData.length>=1){
        this.orderAmount = orderData[0]['payment']['paymentAmount'];
        this.orderDate = orderData[0]['creator']['createDate'];
        this.orderStatus = orderData[0]['orderStatus']['status']['categoryTitle'];
      }
    });

  }


}