Этот синтаксис выглядит многообещающе.Обещание может иметь тип Promise<any[]>
, но это не значит, что вы можете использовать push()
напрямую.
Кроме того, предполагая, что this.peopleList
равно any[]
, его необходимо инициализировать, прежде чем вы сможете выполнить this.peopleList.push()
.
Наконец, кажется, что вы хотите что-то сделать после this.peopleList
получает новый предмет.Вы должны иметь наблюдаемое / обещание и сделать это в два этапа.Тот, где он добавляет к массиву и возвращает массив с новым значением, а затем использует либо .then
, либо .subscribe
для выполнения действия после завершения первой задачи.
Редактировать:
export interface AngularFireList<T> {
query: DatabaseQuery;
valueChanges(events?: ChildEvent[]): Observable<T[]>;
snapshotChanges(events?: ChildEvent[]): Observable<SnapshotAction<T>[]>;
stateChanges(events?: ChildEvent[]): Observable<SnapshotAction<T>>;
auditTrail(events?: ChildEvent[]): Observable<SnapshotAction<T>[]>;
update(item: FirebaseOperation, data: T): Promise<void>;
set(item: FirebaseOperation, data: T): Promise<void>;
push(data: T): database.ThenableReference;
remove(item?: FirebaseOperation): Promise<void>;
}
Это интерфейс AngularFireList.Из быстрого осмотра попробуйте что-то вроде:
// It subscribes to the changes on the list and perform whatever you need upon change.
// Put it after you initialized the peopleList
this.peopleList.valueChanges.subscribe((data) => {
this.navCtrl.push(HomePage);
}, error => console.log(error));
// This is adding a new item on the list, which will trigger the subscription above
this.peopleList.push({
name: name,
lname: lname,
age: age,
dept: dept
});