jsontypescriptangular6angular-json

how to access the JSON data response from the api I am using angular6


Here I am using the angualar6 and. I am fetching the data from the API and created a model class in typescript. I don't know where am I doing mistake. I am new In angular.

 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 };
  };
}

Here is my component.ts file

@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 Response


{
    "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":{...}
         }
    ]
}

I want to display the category title from the order mode in api i am new in angular. please help me out. Thanks in advance.


Solution

  • Based on your code and api response i think you want something like this

    
    
    @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'];
          }
        });
    
      }
    
    
    }