i have a problem when I try to access to objects inside array. Here is my code:
import { Component, OnInit } from '@angular/core';
import {FirebaseService} from '../../services/firebase.service';
import { AngularFire, FirebaseListObservable, FirebaseObjectObservable } from 'angularfire2';
import {Router, ActivatedRoute, Params} from '@angular/router';
import * as firebase from 'firebase';
import { Observable } from 'rxjs';
import { FlashMessagesService } from 'angular2-flash-messages';
@Component({
selector: 'app-search',
templateUrl: './search.component.html',
styleUrls: ['./search.component.css']
})
export class SearchComponent implements OnInit {
listings:any;
search:any;
imageUrls: any = [];
images:any;
myimage:any;
count:any;
constructor(
private firebaseService: FirebaseService,
private router:Router,
public af:AngularFire,
private route:ActivatedRoute,
private flashMessage:FlashMessagesService) {
this.firebaseService.getListings().subscribe(listings => {
this.listings = listings;
this.count = listings.length;
});
}
ngOnInit() {
this.firebaseService.getListings().subscribe(listings => {
this.listings = listings;
for(var i = 0;i<this.listings.length;i++){
this.getImageUrl(listings[i].$key);
}
console.log(this.imageUrls);
console.log(this.imageUrls[1].ImageUrl);
});
}
searchProps(){
this.firebaseService.getListingsByTitle(this.search.toLowerCase()).subscribe(listings => {
this.listings = listings;
});
}
getImageUrl(prodid){
this.imageUrls = [];
this.firebaseService.getListingImages(prodid).subscribe(images => {
this.images = images[0];
let image = images[0];
let storageRef = firebase.storage().ref();
let spaceRef = storageRef.child(image.path);
storageRef.child(image.path).getDownloadURL().then((url) => {
// Set image url
this.imageUrls.push(new ImageUrl(image.$key,url));
}).catch((error) => {
console.log(error);
});
});
}
}
export class ImageUrl {
url: string;
id:string;
constructor(_id:string,_url: string) {
this.url = _url
this.id = _id;
}
}
My console log is showing this but i can't access to this.imageUrls[0]:
I want to access to this.imageUrls[0] and get the url but says "undefined" I don't know why I can't do that. Please if someone can help me with this I am so stacked here.
EDIT 13/06/2017
With the help from @JesúsPallares now is showing always the same image. Now I want for each listing the image. I paste here my front end code:
<div class="col-md-4" *ngFor="let listing of listings | orderby:'!$key'" > <div class="card"> <div class="card-image"> <img class="img-responsive" [src]="imgSelected"> <span class="card-title">{{listing.title}}</span> </div> <div class="card-content"> <p>Cards for display in portfolio style material design by Google.</p> </div> <div class="card-action"> <a [routerLink]="['/listing/'+listing.$key]">+ Info</a> <a [routerLink]="['/listing/'+listing.$key]">Contacto</a> </div> </div> </div>