Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Не отображаются данные из массива по id. (https://javascript.ru/forum/angular/79414-ne-otobrazhayutsya-dannye-iz-massiva-po-id.html)

vlanger2020 04.02.2020 18:17

Не отображаются данные из массива по id.
 
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { AngularFireDatabase } from '@angular/fire/database';
import {Observable} from 'rxjs';


@Component({
  selector: 'app-my-pro-detals',
  templateUrl: './my-pro-detals.component.html',
  styleUrls: ['./my-pro-detals.component.css']
})
export class MyProDetalsComponent implements OnInit {
  item;
  itemValue = '';
  items: Observable<any[]>;

  ngOnInit() {
    this.route.paramMap.subscribe(params => {
      this.item = this.items[+params.get('productId')];
    });
  }

  constructor(
    private route: ActivatedRoute,
    public db: AngularFireDatabase
  ) {this.items = db.list('items').valueChanges(); }

}


<div *ngIf="item">
  <h3>{{ item.name }}</h3>
  <p>{{ item.description }}</p>
</div>


Подскажите, что я делаю не так?

destus 05.02.2020 05:51

vlanger2020,
AngularFireDatabase.valueChanges() возвращает вам Observable (https://github.com/angular/angularfi...d#valuechanges)
Должно быть наверное как-то так
ngOnInit() {
    this.route.paramMap.pipe(
        withLatestFrom(this.items)
    )
    .subscribe(([params, items]) => {
        this.item = items[+params.get('productId')];
    });
}


Часовой пояс GMT +3, время: 16:09.