2017-02-08 3 views
0

Вот ситуация.угловой 2 Массив приходит как «неопределенный»

Я пытаюсь получить номер из моей базы данных, но каждый раз, когда я помещаю число в массив(), он говорит undefined.

Я могу получить номер, как я могу отобразить его в своем HTML, но внутри массива, не работает.

любая идея, почему это происходит?

import { Component, OnInit } from '@angular/core'; 
 
import { DomSanitizer, SafeResourceUrl, SafeUrl, SafeHtml } from '@angular/platform-browser'; 
 
import { ActivatedRoute } from '@angular/router'; 
 
import { RealEstatePhotography } from '../real-estate-photography'; 
 
import { RealEstatePhotographyService } from '../real-estate-photography.service'; 
 

 
@Component({ 
 
    selector: 'app-real-estate-photography-detail', 
 
    templateUrl: './real-estate-photography-detail.component.html', 
 
    styleUrls: ['./real-estate-photography-detail.component.css'], 
 
    providers: [RealEstatePhotographyService], 
 
}) 
 

 
export class RealEstatePhotographyDetailComponent implements OnInit { 
 

 

 
realEstate; 
 
amount 
 
photos = Array(this.amount) 
 

 
    constructor(private route: ActivatedRoute, private _realEstatePhotographyService: RealEstatePhotographyService, private sanitizer: DomSanitizer) {} 
 

 

 
    ngOnInit(){ 
 
    this.route.params.subscribe(params => { 
 
     let title = params['title']; 
 
     let realEstate = this._realEstatePhotographyService.getItem(title).subscribe(realEstate => { 
 
     this.realEstate = realEstate; 
 
     this.amount = this.realEstate.amount 
 

 
     }); 
 

 
    }); 
 
} 
 

 
}

ответ

0

Сумма не определена в то время. Вы должны обновлять photos каждый раз.

export class RealEstatePhotographyDetailComponent implements OnInit { 


realEstate; 
amount: Number; 
photos: Photo[] = []; 

    constructor(private route: ActivatedRoute, private _realEstatePhotographyService: RealEstatePhotographyService, private sanitizer: DomSanitizer) {} 


    ngOnInit(){ 
    this.route.params.subscribe(params => { 
     let title = params['title']; 
     let realEstate = this._realEstatePhotographyService.getItem(title).subscribe(realEstate => { 
     this.realEstate = realEstate; 
     this.amount = this.realEstate.amount; 
     this.photos.push(realEstate.photo); 
     }); 

    }); 
} 

EDIT:

Просто понял, что вы, вероятно, пытаясь определить размер массива - нет необходимости делать это в JavaScript. Просто объявите его как пустой массив и нажмите на свои фотографии по мере необходимости.

+0

Dear Chrispy, Благодарим за ответ. Это не сработало, но дало мне представление, как это сделать. Я мог бы, наконец, решить проблему. Я просто положил фото = Array (this.realEstate.amount) внутри метода ngOnInit(). Снова большое спасибо –

+0

Без проблем! Обратите внимание, что «this.realEstate.amount» всегда будет неопределенным в вашем примере в этот момент времени ... – chrispy

Смежные вопросы