属性 '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)