Получить дочерний элемент FirebaseObjectObservable — Angularfire2

Можно ли настроить дочерний элемент FirebaseObjectObservable? Пожалуйста, проверьте RcTestAppComponent.save() снизу (строки комментариев).

Пример из: https://github.com/angular/angularfire2/blob/master/docs/3-retrieving-data-as-lists.md

import { Component } from '@angular/core';
import { AngularFire, FirebaseObjectObservable } from 'angularfire2';

@Component({
  moduleId: module.id,
  selector: 'app',
  template: `
  <h1>{{ item | async | json }}</h1>
  <input type="text" #newname placeholder="Name" />
  <input type="text" #newsize placeholder="Size" />
  <br />
  <button (click)="save(newname.value)">Set Name</button>
  <button (click)="update(newsize.value)">Update Size</button>
  <button (click)="delete()">Delete</button>
  `,
})
export class RcTestAppComponent {
  item: FirebaseObjectObservable<any>;
  constructor(af: AngularFire) {
    this.item = af.database.object('/item');
  }
  save(newName: string) {
    this.item.set({ name: newName });
    /*
      // can I do somethin like this:
      let index = 2;
      this.item.child(index).set({ name: newName });
      // index is a dynamic number;

      // when I use .child() on this.item, i receive a error: 
      // TypeError this.item.child is not a function
    */

  }
  update(newSize: string) {
    this.item.update({ size: newSize });
  }
  delete() {
    this.item.remove();
  }
}

Спасибо


person Marian07    schedule 08.09.2016    source источник


Ответы (1)


Мне удалось найти решение для set объекта по динамическому пути с другим подходом.

export class RcTestAppComponent {
  /*
    item;
    constructor(af: AngularFire) {
       this.item = af;
    }
  */
  constructor(af: AngularFire) {
    // cleaner TypeScript approach than the above commented lines :o fftopic 
  }
  save(newName: string) {
    let index = 2; // it's a dynamic number
    this.af.database.object('/item/' + index).set({ name: newName };
  }
person Marian07    schedule 08.09.2016