Angular 4 与 Angularfire2 和 Firebase 4 语法迁移问题

喧嚣

基本上我正在尝试将我的 angular 2.3.1 和 firebase 2.xx 项目转换为最新版本,我在获取语法和导入正确方面遇到了一些问题。我一直在使用https://github.com/angular/angularfire2/issues/956,但在导入 { AngularFireAuthModule } 时感到困惑,但随后将其引用为 afAuth: AngularfireAuth。我已经设法在其他地方修复了一些错误,但是很难让身份验证区域正常工作。即使参考一个好的资源也会有所帮助,youtube 上的视频似乎是针对旧版本和我最初使用的。

也感谢任何关于改进 app.modules.ts / 我的代码的建议。

ERROR in C:/Users/User/Desktop/Projects/angular2/changingLives/src/app/components/account/login/login.component.ts (2,10): Module '"C:/Users/User/Desktop/Projects/angular2/changingLives/node_modules/angularfire2/index"' has no exported member 'AngularFire'.

ERROR in C:/Users/User/Desktop/Projects/angular2/changingLives/src/app/components/account/login/login.component.ts (21,17): Property 'subscribe' does not exist on type 'AngularFireAuth'.

ERROR in C:/Users/User/Desktop/Projects/angular2/changingLives/src/app/components/account/login/login.component.ts (50,10): Property 'af' does not exist on type 'LoginComponent'.

ERROR in C:/Users/User/Desktop/Projects/angular2/changingLives/src/app/components/account/login/login.component.ts (51,17): Cannot find name 'AuthProviders'.

ERROR in C:/Users/User/Desktop/Projects/angular2/changingLives/src/app/components/account/login/login.component.ts (52,15): Cannot find name 'AuthMethods'.

ERROR in C:/Users/User/Desktop/Projects/angular2/changingLives/src/app/components/account/login/login.component.ts (66,12): Property 'af' does not exist on type 'LoginComponent'.

此模块的代码。

import {Component, OnInit} from '@angular/core';
import { AngularFire } from 'angularfire2';
import { AngularFireAuth } from 'angularfire2/auth';
import {FlashMessagesService} from 'angular2-flash-messages';
import {Router} from '@angular/router';

@Component({
  selector: 'app-home',
  templateUrl: './login.component.html',
  styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit {

  state: string = '';
  error: any;

  constructor(public afAuth: AngularFireAuth,
              public flashMessage: FlashMessagesService,
              private router: Router) {

    this.afAuth.subscribe(auth => {
      if (auth) {
        this.router.navigateByUrl('/dashboard');
      }
    })
  }

  ngOnInit() {
  }

  loginFb() {
    this.afAuth.auth.signInWithPopup(new firebase.auth.FacebookAuthProvider());
  }

  /*loginFb() {
    this.af.auth.login({
      provider: AuthProviders.Facebook,
      method: AuthMethods.Popup,
    }).then(
      (success) => {
        this.router.navigate(['/dashboard']);
      }).catch(
      (err) => {
        this.error = err;
      }
    )
  }*/

  loginGoogle() {
    this.af.auth.login({
      provider: AuthProviders.Google,
      method: AuthMethods.Popup,
    }).then(
      (success) => {
        this.router.navigate(['/dashboard']);
      }).catch(
      (err) => {
        this.error = err;
      }
    )
  }

  onSubmit(formData) {
    if (formData.valid) {
      console.log(formData.value);
      this.af.auth.login({
        email: formData.value.email,
        password: formData.value.password
      }).then(
        (success) => {
          console.log(success);
          this.router.navigate(['/dashboard'])
        }).catch(
        (err) => {
          console.log(err);
          this.error = err;
        }
      )
    }
  }


  //login() {
  //  this.af.auth.login();
  //}

}

app.modules.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { RouterModule, Routes } from '@angular/router'; // added to provide routes
import { AngularFireModule } from 'angularfire2'; // Adding angularfire
import { AngularFireAuthModule } from 'angularfire2/auth';
import { AngularFireDatabaseModule } from 'angularfire2/database';
import { FlashMessagesModule } from 'angular2-flash-messages';

// services
import { FirebaseService } from './services/firebase.service'; // must be added to the providers below.

// component
import { AppComponent } from './app.component';
import { LoginComponent } from './components/account/login/login.component';
import { ListingsComponent } from './components/demo/listings/listings.component';
import { NavbarComponent } from './components/content/navbar/navbar.component';
import { ListingComponent } from './components/demo/listing/listing.component';
import { AddListingComponent } from './components/demo/add-listing/add-listing.component';
import { EditListingComponent } from './components/demo/edit-listing/edit-listing.component';
import { SignupComponent } from './components/account/signup/signup.component';
import { DashboardComponent } from './components/content/dashboard/dashboard.component';
import { LoginEmailComponent } from './components/account/login-email/login-email.component';

export const firebaseConfig = {
    apiKey: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    authDomain: 'xxxxxxxxxxxxxxxxxxxx',
    databaseURL: 'xxxxxxxxxxxxxxxx.firebaseio.com',
    projectId: 'xxxxxxxxxxxxxxxxx',
    storageBucket: 'xxxxxxxxxxxxxxxxxx.appspot.com',
    messagingSenderId: 'xxxxxxxxxxxxxx'
};

const appRoutes: Routes = [
  {path: '', component:LoginComponent},
  {path: 'listings', component:ListingsComponent},
  {path: 'listing/:id', component: ListingComponent}, //:id to pass id
  {path: 'add-listing', component:AddListingComponent},
  {path: 'edit-listing/:id', component:EditListingComponent}, //:id to pass id
  {path: 'signup', component:SignupComponent},
  {path: 'dashboard', component:DashboardComponent},
  {path: 'login-email', component:LoginEmailComponent}
];

@NgModule({
  declarations: [
    AppComponent,
    LoginComponent,
    ListingsComponent,
    NavbarComponent,
    ListingComponent,
    AddListingComponent,
    EditListingComponent,
    SignupComponent,
    DashboardComponent,
    LoginEmailComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    FlashMessagesModule,
    AngularFireModule.initializeApp(firebaseConfig),
    RouterModule.forRoot(appRoutes), //appRoutes is array of stored routes.
    AngularFireDatabaseModule,
    AngularFireAuthModule

  ],
  providers: [FirebaseService],
  bootstrap: [AppComponent]
})
export class AppModule { }
塞巴斯蒂安·丹尼斯

也许这段代码会对你有所帮助。使用 firebase SDK 代替 AngularFire 进行身份验证。在您的 LoginComponent 导入 firebase 中:

import firebase from 'firebase';

它的构造函数你可以做这样的事情:

firebase.auth().onAuthStateChanged(
      (user) => {
        if (!user) {
          console.log("NOT LOGGED IN");
        } else {
          console.log("Logged In as: ", user);
        }
      });

对于 Facebook 身份验证非常相似,请参阅文档:https : //firebase.google.com/docs/auth/web/facebook-login

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Angular4 / AngularFire2:从管道内查询 firebase?

来自分类Dev

如何解决将Angular-CLI和RC.4与AngularFire 2和Firebase 3一起使用时找不到模块'angularfire2'

来自分类Dev

使用 Angular4 和 Angularfire2 (v4) 在 Firebase 中获取用户身份验证配置文件信息

来自分类Dev

Angular2和Firebase(AngularFire2)

来自分类Dev

使用Angular2,angularfire2和Typescript从Firebase对象中获取数据

来自分类Dev

Razorpay 与 Firebase 和 Angular 4 的集成

来自分类Dev

Angular 2/4 和 Jersey REST CORS 问题

来自分类Dev

使用AngularFire2(Angular2 rc.5)访问firebase.storage()

来自分类Dev

Angular2,Firebase,AngularFire2,路由防护以及如何处理订阅

来自分类Dev

如何在Angular2中使用AngularFire2或Firebase进行多位置“删除”

来自分类Dev

使用 angularFire2 5.0 版将 angular 连接到 Firebase

来自分类Dev

使用Firebase sdk3和Angularfire2的身份验证电子邮件/密码

来自分类Dev

在同一个应用程序中拥有 firebase 和 AngularFire2

来自分类Dev

如何使用 AngularFire2 和 Firebase Storage 上传文件数组?

来自分类Dev

在angular2中迁移到RC4之后的问题

来自分类Dev

Angular2 Rc4到Rc5迁移:Traceur问题

来自分类Dev

在angular2中迁移到RC4之后的问题

来自分类Dev

ngIf 的 Angular 4 问题

来自分类Dev

Angular 4 安装问题

来自分类Dev

Angular 4 和模块:Rangy

来自分类Dev

Angular 4 项目和 TFS

来自分类Dev

Angular 4 和打字稿

来自分类Dev

Angular 4 的 Bootstrap 4 网格问题

来自分类Dev

刷新以显示来自 Firebase + Angular 4 的内容

来自分类Dev

使用 AngularFire2 在 Angular 5 应用程序中读取和更新以下格式的 Fire-base 数据

来自分类Dev

Angular 2/4 Observables

来自分类Dev

Angular $ http和Rails 4参数

来自分类Dev

Angular4 和 Devextreme 调度器

来自分类Dev

Angular 4 和 GitHub GraphQL API

Related 相关文章

  1. 1

    Angular4 / AngularFire2:从管道内查询 firebase?

  2. 2

    如何解决将Angular-CLI和RC.4与AngularFire 2和Firebase 3一起使用时找不到模块'angularfire2'

  3. 3

    使用 Angular4 和 Angularfire2 (v4) 在 Firebase 中获取用户身份验证配置文件信息

  4. 4

    Angular2和Firebase(AngularFire2)

  5. 5

    使用Angular2,angularfire2和Typescript从Firebase对象中获取数据

  6. 6

    Razorpay 与 Firebase 和 Angular 4 的集成

  7. 7

    Angular 2/4 和 Jersey REST CORS 问题

  8. 8

    使用AngularFire2(Angular2 rc.5)访问firebase.storage()

  9. 9

    Angular2,Firebase,AngularFire2,路由防护以及如何处理订阅

  10. 10

    如何在Angular2中使用AngularFire2或Firebase进行多位置“删除”

  11. 11

    使用 angularFire2 5.0 版将 angular 连接到 Firebase

  12. 12

    使用Firebase sdk3和Angularfire2的身份验证电子邮件/密码

  13. 13

    在同一个应用程序中拥有 firebase 和 AngularFire2

  14. 14

    如何使用 AngularFire2 和 Firebase Storage 上传文件数组?

  15. 15

    在angular2中迁移到RC4之后的问题

  16. 16

    Angular2 Rc4到Rc5迁移:Traceur问题

  17. 17

    在angular2中迁移到RC4之后的问题

  18. 18

    ngIf 的 Angular 4 问题

  19. 19

    Angular 4 安装问题

  20. 20

    Angular 4 和模块:Rangy

  21. 21

    Angular 4 项目和 TFS

  22. 22

    Angular 4 和打字稿

  23. 23

    Angular 4 的 Bootstrap 4 网格问题

  24. 24

    刷新以显示来自 Firebase + Angular 4 的内容

  25. 25

    使用 AngularFire2 在 Angular 5 应用程序中读取和更新以下格式的 Fire-base 数据

  26. 26

    Angular 2/4 Observables

  27. 27

    Angular $ http和Rails 4参数

  28. 28

    Angular4 和 Devextreme 调度器

  29. 29

    Angular 4 和 GitHub GraphQL API

热门标签

归档