Как получить доступ к собственному объекту Firebase при использовании angularfire2?

Я использую комбинацию AngularFire2 (2.0.0-beta.2) с angular2 (2.0.0-rc.4). Я хотел бы получить доступ к собственному объекту Firebase (не корневому объекту AngularFire) из Angularfire2.

Внутри моего компонента я хочу делать звонки, такие как:

firebase.auth().currentUser.updateEmail("[email protected]")

где firebase - это родной объект firebase, как вы видите из фрагмента ниже:

<script src="https://www.gstatic.com/firebasejs/3.1.0/firebase.js"></script>
  <script>
    // Initialize Firebase
    // TODO: Replace with your project's customized code snippet
    var config = {
      apiKey: "apiKey",
      authDomain: "projectId.firebaseapp.com",
      databaseURL: "https://databaseName.firebaseio.com",
      storageBucket: "bucket.appspot.com",
    };
    firebase.initializeApp(config);
  </script>

Но я не понимаю, как настроить мой компонент angular2 так, чтобы внутри него был виден объект firebase. Возможно, решить очень простую проблему, но я не знаю, как ее решить - я не специалист по angular2. Я надеялся, что будет и AngularFire API, чтобы получить объект, но это не так.

Кроме того, причина, по которой я пытаюсь это сделать, заключается в том, что я не думаю, что API angularfire2 еще завершены (это понятно, так как он все еще находится в бета-версии), и я пытаюсь обойти это. Например, я хочу обновить адрес электронной почты или пароль пользователя или отправить им письмо с забытым паролем. Похоже, что в AngularFire2 эта функциональность еще не существует, поэтому я пытаюсь реализовать ее с помощью встроенного объекта Firebase.

 theblindprophet11 июл. 2016 г., 17:50
AngularFire используется для получения 3-сторонней привязки, такой как объекты ($firebaseObject) и массивы ($firebaseArray). Вы бы использовали обычныйFirebase для аутентификации и других функций
 Frank van Puffelen11 июл. 2016 г., 18:02
Если что-то еще не добавлено в AngularFire, вы можете использовать обычный базовый пакет Firebase JavaScript SDK. Увидетьfirebase.google.com/docs/auth/web/manage-users Если у вас возникли проблемы с тем, чтобы заставить что-то работать, опубликуйте минимальный код, который показывает нам, где вы застряли.

Ответы на вопрос(3)

Решение Вопроса

сказать, что я уверен, что мой ответ - не самое элегантное решение, я еще не эксперт по javascript / typescript / angular. Но мой ответ работает - даже если я не до конца понимаю.

Я использовал angular-cli для настройки моего проекта, основанного на angular2 и последней базе Firebase. Очевидно, когда вы используете это для настройки вашего проекта, существует глобальный объект, созданный с именем «firebase». Один из способов сделать его видимым в вашем угловом компоненте 2 - поместить это объявление на глобальном уровне в вашем компоненте (сразу после операторов импорта и до объявления вашего класса).

declare var firebase : any;

После того, как вы сделаете это, глобальный объект firebase станет доступен для использования в вашем компоненте.

 Chris O'Connell22 июл. 2016 г., 07:47
Ваше решение работало и было только одной строкой кода. Кажется довольно элегантным для меня ;-)

этот подход может показаться вам полезным.

Смотрите код для лучшего понимания:

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

@Component({
  templateUrl: 'app/auth/resetpassword.component.html'
})

export class ResetpassComponent {
  public auth: any;
  constructor(private af: AngularFire, @Inject(FirebaseApp) firebaseApp: any) {
    this.auth = firebaseApp.auth()
    console.log(this.auth);
  }

  // formData.value.email = '[email protected]';
  onSubmit(formData) {
     if(formData.valid) {
       console.log('Sending email verification');
       this.auth.sendPasswordResetEmail(formData.value.email)
         .then( (response) => {
           console.log('Sent successfully');
         })
         .catch( (error) => {
           console.log(error);
         })
     }
  }
}

По-английски:

ИмпортироватьInject а такжеFirebaseAppСделать доступным в вашем компонентеНачните использовать все встроенные функции и методы SDK javascript, такие какsendPasswordResetEmail()

Делатьauth. не выполняет автозаполнение доступными методами и функциями, поэтому вам могут потребоваться документы, близкие к вам, например:https://firebase.google.com/docs/auth/web/manage-users

Любое спасибо? Дать @cartant:https://stackoverflow.com/a/39069813/1757321

я использовал

import {AngularFireModule} from "angularfire2";
import *as firebase from 'firebase';

в импорте в файле app.module.ts

нашел здесь:https://github.com/angular/angularfire2/issues/445

Ваш ответ на вопрос