Hi,
I am new in Angular. i have issue in mapping. I called Web API in Angular following is the Json object coming from the backend:
{ "productCategoryDataModel": [ { "productsCategortyName": "Electronics", "productsList": [ { "id": 1, "productName": "Laptop", "productDescription": "Laptop Core i7", "productImageUrl": "fsdgdfgdfgdfgd" }, { "id": 5, "productName": "IPad", "productDescription": "IPad", "productImageUrl": "hgfhgfhgf" } ] }, { "productsCategortyName": "Grocery", "productsList": [ { "id": 3, "productName": "Tomato", "productDescription": "Tomato", "productImageUrl": "dgdfgdfggdfgdf" }, { "id": 4, "productName": "Onion", "productDescription": "Onion", "productImageUrl": "hgfhgfgh" } ] } ] }
I have created the following interface in angular for this json:
export interface IProductsResponse { ProductCategoryDataModel: ProductCategoryDataModel[]; } export interface ProductCategoryDataModel { ProductsCategortyName: string productsList: ProductsList[]; } export interface ProductsList { ProductId: number; ProductName: string; ProductDescription: string; ProductImageUrl: string; }
Following is my Service class that calling the API:
@Injectable({ providedIn: 'root' }) export class ProductsListService { apiUrl: string = 'https://localhost:7025/api/ProductsManagement/GetAllProducts'; constructor(private httpClient: HttpClient) { } getProductsGalleryData(): Observable<IProductsResponse[]> { return this.httpClient.get<IProductsResponse[]>(this.apiUrl); }
Following is my component ts file:
@Component({ selector: 'app-products-gallery', templateUrl: './products-gallery.component.html', styleUrls: ['./products-gallery.component.css'] }) export class ProductsGalleryComponent implements OnInit { productsList: IProductsResponse[] | undefined; constructor(private _galleryProducts: ProductsListService) { } ngOnInit(): void { this._galleryProducts.getProductsGalleryData().subscribe(data => { this.productsList = data; console.log(data); }); } }
The data is displayed in the Console in the form of json but i have issue in the HTML file because when i use the ngFor loop for ProductsList it gimes me error so how to map the response into the interface and how to write the html to display this data?