Массив объекта, показывающий неопределенный угол в 5 - PullRequest
0 голосов
/ 29 мая 2018

Даже когда я пытаюсь получить доступ к html как этот, он также не дает никакого значения

  <mat-nav-list>
      <a mat-list-item href="" *ngFor="let link of products"> {{ link.name }} </a>
   </mat-nav-list>

Вот мой JSON

[{"id":215,"name":"Book ambulance","slug":"book-ambulance","permalink":"http://staging.drmedapp.com.cp-36.webhostbox.net/demo/product/book-ambulance/","date_created":"2018-02-24T08:31:01","date_modified":"2018-02-24T08:32:13","type":"simple","status":"publish","featured":false,"catalog_visibility":"visible","description":"","short_description":"","sku":"","price":"0","regular_price":"0","sale_price":"","date_on_sale_from":"","date_on_sale_to":"","price_html":"<span class=\"woocommerce-Price-amount amount\"><span class=\"woocommerce-Price-currencySymbol\">&#8377;</span>0.00</span>","on_sale":false,"purchasable":true,"total_sales":0,"virtual":false,"downloadable":false,"downloads":[],"download_limit":-1,"download_expiry":-1,"download_type":"standard","external_url":"","button_text":"","tax_status":"taxable","tax_class":"","manage_stock":false,"stock_quantity":null,"in_stock":true,"backorders":"no","backorders_allowed":false,"backordered":false,"sold_individually":false,"weight":"","dimen

Вот мой файл .ts,Я обновил код, но все еще получаю ошибку this.products не определен.

import { Component, OnInit } from '@angular/core';
import {Headers, Http, RequestOptions, URLSearchParams} from '@angular/http';
import 'rxjs/add/operator/toPromise';
import * as WC from 'woocommerce-api';
import { WooApiService } from 'ng2woo';
import * as CryptoJS from 'crypto-js';

@Component({
  selector: 'app-pcat',
  templateUrl: './pcat.component.html',
  styleUrls: ['./pcat.component.scss']
})
export class PcatComponent implements OnInit {
  WooCommerce: any;
  public products: any;
  data: any;
  public crypto: any;
  typesOfShoes = ['Boots', 'Clogs', 'Loafers', 'Moccasins', 'Sneakers'];

  constructor(private woo: WooApiService) {}

  public getALL(){
    this.woo.fetchItems('products')
      .then(products => {
         for(var i = 0; i < products.length; i++) {
            this.products.push(products[i])
         }
      })
      .catch(error => console.log(error));
    } 
  ngOnInit(): void  {
    this.getALL();
  }
}

Ответы [ 3 ]

0 голосов
/ 29 мая 2018

Я думаю, что вы проблема в том, что вы не присваиваете возвращаемое значение функции getAll() массиву products.

    public getALL(){
         this.woo.fetchItems('products')
           .then(products => {
              for(var i = 0; i < products.length; i++) {
                 this.products.push(products[i])
              }
           })
           .catch(error => console.log(error));
    } 
0 голосов
/ 31 мая 2018

Похоже, продукты загружаются динамически, когда вы делаете вызов API.до тех пор, пока не завершится вызов API, свойства свойств будут содержать значение инстилляции, равное undefined для того, что вы сделали, как показано ниже.

public products: any;

до загрузки продуктов шаблон не знает, что это массив, чтогде шаблон терпит неудачу.теперь исправим инициализацию свойства с пустым массивом.

public products: any[] = [];

Короче, похоже, это проблема инициализации .

Надеюсь, это поможет

0 голосов
/ 29 мая 2018

Вам необходимо заполнить свойство products для текущего ответа

public getALL(){
    this.woo.fetchItems('products')
    .then(products => { this.products = products; })
    .catch(error => console.log(error));
} 
...