2017-07-06 76 views
1

Im使用Angular 4和Firebase进行身份验证。我收到错误“Property'auth'在类型'AngularFireModule'上不存在。”类型'AngularFireModule'上不存在属性'auth'

的代码如下

import { AngularFireModule} from 'angularfire2'; 
import { AngularFireAuthModule } from 'angularfire2/auth'; 
import { AngularFireDatabaseModule } from 'angularfire2/database'; 


@Component({ 
selector: 'app-login', 
templateUrl: './login.component.html', 
styleUrls: ['./login.component.css'], 
animations: [moveIn()], 
host: {'[@moveIn]': ''} 
}) 

export class LoginComponent implements OnInit { 
error: any; 
constructor(public af: AngularFireModule,private router: Router) { 
    this.af.auth.subscribe(auth => { 
    if(auth) { 
    this.router.navigateByUrl('/members'); 
    } 
}); 

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

版本信息: “@角/路由器”: “^ 4.0.0”,

"angularfire2": "^4.0.0-rc.1", 

"core-js": "^2.4.1", 

"firebase": "^4.1.3", 

"rxjs": "^5.1.0", 

"zone.js": "^0.8.4" 

UPDATE:

这个工作

constructor(public af: AngularFireAuth,private router: Router) { 
     this.af.authState.subscribe(auth => { 
     if(auth) { 
     this.router.navigateByUrl('/members'); 
     } 

回答

1

对于AngularFireAuth,你应该在你的rootmodule导入AngularFireAuthModule

import { AngularFireModule } from 'angularfire2'; 
import { AngularFireAuthModule } from 'angularfire2/auth'; 

@NgModule({ 
    imports: [ 
    ... 
    AngularFireModule.initializeApp(firebaseConfig), 
    AngularFireDatabaseModule, 
    AngularFireAuthModule,  // <------ mention here 
    ] 
}) 
export class AppModule { } 

然后在你的组件注入AngularFireAuth

import { AngularFireAuth } from 'angularfire2/auth'; 

constructor(private auth: AngularFireAuth, ... 

使用它象下面这样:

this.auth.auth() 
0

数据库和权威性,现在分开模块,AngularFireAuth和AngularFireDatabase

所以在你的构造函数,你应该这样做

constructor(private router: Router, public af: AngularFireAuth 
) { ... } 

另一个原因是,如果你只是使用FireAuthModule,你可以删除2个进口(AngularFireModule和AngularFireDatabaseModule)

+0

@php_beginner是AngularFireAuth不AngularFireAuthModule :) – brijmcq

+0

@php_beginner能行吗? – brijmcq

+0

是的,它的工作原理。谢谢 – sinthu225

相关问题