2016-08-01 12 views
3

Wir versuchen, dieses Beispiel zu bekommen in unserem Angular 2 App von der angularFire2 api docs auszuführen: angularfire2.com/apiKann firebaseRef nicht mit angular2 arbeiten "Kann den Namen 'firebase' nicht finden."

import {Inject} from 'angular2/core'; 
import {FirebaseRef} from 'angularfire2'; 

class MyComponent { 
constructor(@Inject(FirebaseRef) ref:Firebase) { 
ref.on('value', this.doSomething); 
    } 
} 

aber wir halten immer einen Build-Fehler "nicht findet Namen Firebase"

Wo müssen wir Firebase definieren? Seine bereits in typings.json definiert:

"ambientDependencies": { 
"firebase": "github:DefinitelyTyped/DefinitelyTyped/firebase/firebase.d.ts#64b25f63f0ec821040a5d3e049a976865062ed9d", 
"es6-shim": "registry:dt/es6-shim#0.31.2+20160317120654" 

},

jede Einsicht würde geschätzt.

+0

Sie‘ Verwenden Sie eine alte versionierte "Umgebung". Überprüfen Sie die neue Angular CLI auf aktuelle Updates. – idan

Antwort

1

Dies ist von an answer to this github issue übernommen, die für mich funktionierte, wenn ich nicht den gleichen Code bekommen konnte, den Sie versucht zu arbeiten.


Mit Angularfire2, sollten Sie keine .on schreiben müssen() oder .off(). Sie können das Gleiche erreichen, indem auf eine Referenz zeigen und dann Sie sie abonnieren, etwa so:

let subscription = this.af.database.object('someLocation').subscribe(data=> { 
//do something with your data 
}) 

, die im wesentlichen die gleiche ist wie:

firebase.database().ref('someLocation').on('value', snapshot=>{ 
//do something with your data 
}) 
+0

Abonnieren Sie, sucht ständig nach Updates. Gibt es für firebase.once() ein äquivalent angularfire2, das Daten nur einmal abruft? – cyberabis

+0

hat es tatsächlich herausgefunden, ich muss this.af.database.object ('someLocation') verwenden. Take (1) .subscribe (...) – cyberabis

+0

aber was ist, wenn ich Folgendes verwenden möchte: ref.on ('child_added') ? – Oli