this.db.object (...). push не является функцией в Ionic - PullRequest
2 голосов
/ 18 марта 2019

Это мой файл .ts, и я не знаю, почему я получаю сообщение об ошибке выше. Нажатие на метод addClick имеет красную пунктирную линию под ним.

Я следовал учебному пособию, и это то же самое, что парень делал в своем учебном пособии.

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 
'ionic-angular';
import { AngularFireDatabase , AngularFireObject } 
from 'angularfire2/database';
import { Observable } from 'rxjs';



@IonicPage()
@Component({
selector: 'page-create-quiz',
templateUrl: 'create-quiz.html',
})
export class CreateQuizPage {
tasks : Observable <any> ; 
myInput;

constructor(public db:AngularFireDatabase){
this.tasks = this.db.object('/tasks').valueChanges()
this.tasks .subscribe(data => {
  this.myInput = data;
})
}

addclick(){
this.db.object<any>('/tasks').push(this.myInput);
}



ionViewDidLoad() {
console.log('ionViewDidLoad CreateQuizPage');
}


}

Это файл my.html

<ion-header>
<ion-navbar>
<ion-title>Create you quiz here</ion-title>
</ion-navbar>
</ion-header>

<ion-content padding>
<ion-item>
<ion-input [(ngModel)] = "myInput" ></ion-input>


</ion-item>
<button (click)= "addclick()"> Add</button>
</ion-content>

1 Ответ

1 голос
/ 18 марта 2019

object() - это метод внутри AngularFireDatabase класса:

 object<T>(pathOrRef: PathReference): AngularFireObject<T>  {
  const ref = getRef(this.database, pathOrRef);
  return createObjectReference<T>(ref, this);
 }

https://github.com/angular/angularfire2/blob/master/src/database/database.ts#L37

Поскольку он имеет тип AngularFireObject, вы можете использовать следующие методы:

method  

set(value: T)       Replaces the current value in the database with the new value specified as the parameter. This is called a destructive update, because it deletes everything currently in place and saves the new value.
update(value: T)    Updates the current value with in the database with the new value specified as the parameter. This is called a non-destructive update, because it only updates the values specified.
remove()            Deletes all data present at that location. Same as calling set(null).

https://github.com/angular/angularfire2/blob/master/docs/rtdb/objects.md#api-summary

Следовательно, метод push() отсутствует.


В вашем коде кажется, что вы просто хотите добавить данные, поэтомуВы можете использовать push() внутри AngularFireList.Пример:

const itemsRef = db.list('items');
itemsRef.push({ name: newName });

Прочитайте документы здесь:

https://github.com/angular/angularfire2/blob/master/docs/rtdb/lists.md

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...