Вы также можете использовать метод compareTo()
для сравнения двух строк. Если результат compareTo равен 0, то две строки равны, в противном случае сравниваемые строки не равны.
==
сравнивает ссылки и не сравнивает фактические строки. Если вы создали каждую строку, используя new String(somestring).intern()
, вы можете использовать оператор ==
для сравнения двух строк, в противном случае могут использоваться только методы equals () или compareTo.
this.afd.list('/shoppingItems/')
не возвращает асинхронный наблюдаемый, который должен работать с трубой async
. Он возвращает ссылку на список в базе данных реального времени. Вы должны использовать valueChanges()
, чтобы вернуть это.
В вашем провайдере верните наблюдаемый,
getShoppingItems() {
console.log("Shopping items"+this.afd.list('/shoppingItems/'))
return this.afd.list('/shoppingItems/').valueChanges();//here
}
Если вы просматриваете $key/$value
, Проверьте подробности обновления для angularfire2 v4 до 5 . Это связано с тем, что FirebaseList
устарел и AngularFireList
теперь возвращается из версии 5.
Вызов .valueChanges () возвращает Observable без каких-либо метаданных. Если вы уже сохраняете ключ как свойство, тогда вы в порядке. Однако, если вы полагаетесь на ключ $, тогда вам нужно использовать .snapshotChanges ()
blockquote>Вам нужно использовать
snapshotChanges()
getShoppingItems() { console.log("Shopping items"+this.afd.list('/shoppingItems/')) return this.afd.list('/shoppingItems/').snapshotChanges();//here }
Чтобы получить доступ к
$key
или$value
в html, используйтеitem.payload.key
иitem.payload.val()
Добавьте ionViewDidLoad
жизненный цикл в файл home.ts
и вместо конструктора загрузите свой элемент в ionViewDidLoad
, замените свой конструктор на код ниже
constructor(public navCtrl: NavController, public firebaseProvider: FirebaseProvider) {
}
ionViewDidLoad() {
this.shoppingItems = this.firebaseProvider.getShoppingItems();
console.log(this.shoppingItems);
}
Импорт на странице.ts
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { AngularFireDatabase} from 'angularfire2/database';
import { Observable } from "rxjs/Observable";
import { ShoppingItem } from '../../model/shoppingitem';
импортирует поставщика прямо из вашего провайдера
import { FirebaseProvider } from '../../providers/firebase/firebase';
export class Page {
shoppingItems:Observable<ShoppingItem[]>;
constructor(public navCtrl: NavController,
public firebaseProvider: FirebaseProvider) {
this.shoppingItems=this.firebaseProvider
.getShoppingItem()
.snapshotChanges()
.map(
changes=>{
return changes.map(c=>({
key:c.payload.key, ...c.payload.val(),
}));
}
);
}
}
}
firebaseProvider
обратите внимание на 'shopping-list'
это таблица в базе данных firebase
private itemListRef = this.afDatabase.list<ShoppingItem>('shopping-list');
constructor(private afDatabase: AngularFireDatabase) {}
.getShoppingItem(){
return this.itemListRef;
}
}
Ваша модель shoppingitem
export interface ShoppingItem{
key?:string;
}
async
, чтобы вы могли назначить наблюдаемый список (который вы уже делаете). Если вам нужны данные, вам придется подписаться в компоненте – Suraj Rao 1 November 2017 в 06:29