尝试以角度

时间:2019-06-03 04:48:11

标签: angular object

我有一个由我定义的数据类型(类)的向量。我的错误是,当我尝试从位置1开始打印时,它向我显示:“ _ this.infurniture [1]未定义”,如果我尝试仅打印位置0(如果显示正确)的话。我打印了不动产矢量的长度,显然是因为变量“ real”显示正确的长度而插入了变量“ real”,但是我不知道会发生什么。我在下面留下代码:

import { Component, OnInit } from '@angular/core';
import { HostlistService } from '../servicios/hostlist.service';
import {$,jQuery} from 'jquery';
import { Inmueble } from '../modelos/inmueble';

@Component({
  selector: 'app-slider',
  templateUrl: './slider.component.html',
  styleUrls: ['./slider.component.css']
})
export class SliderComponent implements OnInit {
  inmuebles: Inmueble[] = [];
  i = 1;
  url: string = "d782a4ae-733f-b7c4-ed11-5ba553455e04_fot01_c";

  constructor(private hostlistService: HostlistService) { }
  ngOnInit() {
    this.cargarJson();


  }

  anteriorInmueble(){
    this.i=this.i-1;
  }

  siguienteInmueble(){
    this.i=this.i+1;
  }

// metodo para cargar el Json recibido de la petición
  cargarJson(){
    var foto1,foto2: string;
    foto1 = "fot0", foto2 = "fot";
    var pos: number;
    this.hostlistService.getInmuebles().subscribe(
        result => {
            if(result.success === true){
                for(const item of result.data) {
                    pos = 0;
                    const inmueble = new Inmueble();
                    inmueble.nombre = item.nomb_prod_c;
                    inmueble.id = item.id;
                    inmueble.estacionamiento = item.estan_c;
                    inmueble.baño = item.banof_c;
                    console.log(inmueble.nombre);
                    (item.fot01_c != "") ? inmueble.fotos[0]="true": inmueble.fotos[0]="false"; pos++;
 
                    this.inmuebles.push(inmueble);
               
                    console.log("----->"+this.inmuebles[0].fotos[0]);
                    console.log("----->"+this.inmuebles[1].fotos[0]);

            }
        }

        },
        error => {
            console.log(error);
        }



    );
  }

}

这是属性类:

export class Inmueble {
  nombre: string;
  id: string;
  baño: number;
  estacionamiento: number;
  metro: number;
  precio: number;
  fotos: boolean[];
}

注意:我意识到,如果我将2对象“ real2”解密并打印console.log(“ ----->” + this.infurniture [0] .name);和console.log(“ ----->” + this.infurniture [1] .name)是否显示,所以问题与对象或类有关,但我不知道这可能是什么。我先感谢谁能帮助我。谢谢

2 个答案:

答案 0 :(得分:0)

您尚未初始化inmeuble对象的fotos数组。请执行以下操作-

const inmueble = new Inmueble();
inmueble.fotos = [];
inmueble.nombre = item.nomb_prod_c;
inmueble.id = item.id;
inmueble.estacionamiento = item.estan_c;
inmueble.baño = item.banof_c;
console.log(inmueble.nombre);
(item.fot01_c != "") ? inmueble.fotos.push(true): inmueble.fotos.push(false); pos++;

答案 1 :(得分:-1)

当inmuebles数组仅包含1个元素时,您正在尝试在for周期中记录this.inmuebles [1]-您也正在第一个循环中进行记录。从for循环中移出日志记录(console.log)。

我已经更新了您的cargarJson函数,并删除了日志记录:

cargarJson(){
    var foto1,foto2: string;
    foto1 = "fot0", foto2 = "fot";
    var pos: number;
    this.hostlistService.getInmuebles().subscribe(
        result => {
            if(result.success === true){
                for(const item of result.data) {
                    pos = 0;
                    const inmueble = new Inmueble();
                    inmueble.nombre = item.nomb_prod_c;
                    inmueble.id = item.id;
                    inmueble.estacionamiento = item.estan_c;
                    inmueble.baño = item.banof_c;
                    console.log(inmueble.nombre);
                    (item.fot01_c != "") ? inmueble.fotos[0]="true": inmueble.fotos[0]="false"; pos++;

                    this.inmuebles.push(inmueble);
                    }
                 console.log("----->"+this.inmuebles[0].fotos[0]);
                 console.log("----->"+this.inmuebles[1].fotos[0]);
            }

        },
        error => {
            console.log(error);
        }
    );
  }