我有一个由我定义的数据类型(类)的向量。我的错误是,当我尝试从位置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)是否显示,所以问题与对象或类有关,但我不知道这可能是什么。我先感谢谁能帮助我。谢谢
答案 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);
}
);
}