2017-02-07 2 views
0

Я извлекаю данные из базы данных firebase.Угловая модель 2 в функцию

Это мой service.ts

import { Injectable } from '@angular/core'; 
 
import { Observable } from 'rxjs/Observable'; 
 
import {Http, Response, RequestOptions} from '@angular/http'; 
 
import { RealEstatePhotography } from './real-estate-photography'; 
 
import {AngularFire, FirebaseListObservable} from 'angularfire2'; 
 
import 'rxjs/add/operator/map'; 
 

 
@Injectable() 
 
export class RealEstatePhotographyService { 
 

 
    constructor(private af: AngularFire, private http: Http) { } 
 

 
private realEstate = this.af.database.list('realestate'); 
 

 
    getItems(){ 
 
    return (this.realEstate); 
 
    } 
 

 

 
    getItem(title: RealEstatePhotography) : Observable<any>{ 
 
    return this.realEstate 
 
    .map((list: Array<any>) => { 
 
     let result: RealEstatePhotography = new RealEstatePhotography(); 
 
     if (list){ 
 
     list.forEach(element => { 
 
      if (element.title === title){ 
 
      result = element 
 
      } 
 
     }); 
 
     return result; 
 
     } 
 
    }); 
 
    } 
 
}

это мой деталь компонент:

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 { 
 

 
photos = this.photo(); 
 
realEstate; 
 

 

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

 
    photo(){ 
 
    var location = "" 
 
    for (var i = 0; i < location.length; i++){ 
 
     Array(i); 
 
    } 
 
    return console.log(Array(i)); 
 

 
    } 
 

 

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

 
     }); 
 
    }); 
 
    } 
 
}

это мой HTML из т шляпу.

<p>{{realEstate.folder}}</p>

Это данные я получаю:

enter image description here

Теперь мой вопрос. Мне нужно поставить этот результат в переменную «location», которую я имею в функции photo().

что-то вроде вар местонахождения = this.realEstate.folder или {{}} realEstate.folder

Я не могу понять, как это сделать.

Спасибо

вот шлепнуть, но, конечно, не возвращается во что-нибудь, потому что я не подключен к firebase

https://plnkr.co/edit/a0WKevpXpwvY8x7NG1cb?p=preview

+0

Вы хотите предоставить плункер? –

+0

Я не понимаю вопроса: «Мне нужно поместить этот результат в переменную« location ». Пожалуйста, объясните, чего вы пытаетесь достичь. – Per

+0

Пер, я знаю, немного запутанно. Это было очень трудно объяснить. Вы видите результат, который я получаю на странице? Ну, мне нужно поместить эти данные в место что-то вроде: var location = "" https://s3.amazonaws.com/gadaphotos/photos/portfolio/alden_park/ " , но получить эти данные с моей базы. поместите {{realEstate.folder}}, и я получу эти данные. Я хочу поставить что-то похожее: var location = {{realEstate.folder}}, чтобы получить те же данные. Спасибо –

ответ

0

Я не совсем ясно, на что вы пытаясь сделать, но, возможно, это может приблизиться к вам?

Обратите внимание, что this.location будет 'undefined' до тех пор, пока ваши наблюдаемые данные не возвращаются. Если вы используете это в шаблоне, вы можете использовать * ngIf = "location" в теге.

export class RealEstatePhotographyDetailComponent implements OnInit { 

    photos = this.photo(); 
    realEstate; 
    private location: any; 

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

     photo(){ 

if(this.location) { 


     for (var i = 0; i < this.location.length; i++){ 
      Array(i); 
     } 
     return console.log(Array(i)); 
    } 
     } 


     ngOnInit(){ 
     this.route.params.subscribe(params => { 
      let title = params['title']; 
      let realEstate = this._realEstatePhotographyService.getItem(title).subscribe(realEstate => { 
      this.realEstate = realEstate 
    this.location=realEstate.folder; 
      }); 
     }); 
     } 
    } 
+0

Спасибо, за. Это не работает. Я ищу другие варианты. может, наконец, получить данные, но все же, он не делает то, что я люблю д. Благодарим за помощь –

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