属性 'auth' 在类型 'AngularFireModule' 上不存在
Property 'auth' does not exist on type 'AngularFireModule'
我正在使用 Angular 4 和 Firebase 进行身份验证。我收到错误消息“属性 'auth' 在类型 'AngularFireModule' 上不存在。”
代码如下
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;
})
}
}
版本信息:
"@angular/router": "^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"
更新:
这有效
constructor(public af: AngularFireAuth,private router: Router) {
this.af.authState.subscribe(auth => {
if(auth) {
this.router.navigateByUrl('/members');
}
对于 AngularFireAuth
,您应该在根模块中导入 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()
数据库和身份验证现在是独立的模块,AngularFireAuth 和 AngularFireDatabase
所以在你的构造函数中,你应该这样做
constructor(private router: Router, public af: AngularFireAuth
) { ... }
另一个是,如果您只使用 FireAuthModule,则可以删除其他 2 个导入(AngularFireModule 和 AngularFireDatabaseModule)
我正在使用 Angular 4 和 Firebase 进行身份验证。我收到错误消息“属性 'auth' 在类型 'AngularFireModule' 上不存在。”
代码如下
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;
})
}
}
版本信息: "@angular/router": "^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"
更新:
这有效
constructor(public af: AngularFireAuth,private router: Router) {
this.af.authState.subscribe(auth => {
if(auth) {
this.router.navigateByUrl('/members');
}
对于 AngularFireAuth
,您应该在根模块中导入 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()
数据库和身份验证现在是独立的模块,AngularFireAuth 和 AngularFireDatabase
所以在你的构造函数中,你应该这样做
constructor(private router: Router, public af: AngularFireAuth
) { ... }
另一个是,如果您只使用 FireAuthModule,则可以删除其他 2 个导入(AngularFireModule 和 AngularFireDatabaseModule)