Register User with Firebase and AngularFire2
在我的app.component.ts中,我正在使用此功能通过angularFire2将用户注册到Firebase。 但是我在类型" void"上遇到"属性'subscribe'不存在"的错误。
1 2 3 4 5 6 7 8 9 10 | register() { this.userService.registerUser(this.model) .subscribe( data => { console.log('Registration successful') }, error => { this.loading = false; }); } |
在我的userService.ts中,我有以下调用从Firebase获取数据
1 2 3 4 5 6 7 8 9 10 11 12 | registerUser(user: User) { this.angularFire.auth.createUser({ email: user.email, password: user.password }).then( (success) => { console.log(success); }).catch( (err) => { console.log(err); }) } |
我知道为什么会出现错误。 因为我在userService中的registerUse函数不会返回可观察到的结果。 当我刚接触Typescript时,如何将其更改为可观察的状态,以便在数据返回时可以在app.component.ts中的console.log('Success')进行操作?
最直接的选择是退还诺言:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import { FirebaseAuthState } from 'angularfire2'; registerUser(user: User): Promise<FirebaseAuthState> { return this.angularFire.auth.createUser({ email: user.email, password: user.password }) .then((authState: FirebaseAuthState) => { console.log(success); return authState; }) .catch((error) => { console.log(error); throw error; }); } |
但是,要返回一个可观察值,可以使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import { Observable } from 'rxjs/Observable'; import 'rxjs/add/observable/fromPromise'; import { FirebaseAuthState } from 'angularfire2'; registerUser(user: User): Observable<FirebaseAuthState> { return Observable.fromPromise(this.angularFire.auth.createUser({ email: user.email, password: user.password }) .then((authState: FirebaseAuthState) => { console.log(success); return authState; }) .catch((error) => { console.log(error); throw error; })); } |
如果要使用
1 2 3 4 5 6 7 8 9 10 | import { Observable } from 'rxjs/Observable'; import 'rxjs/add/observable/fromPromise'; import { FirebaseAuthState } from 'angularfire2'; registerUser(user: User): Observable<FirebaseAuthState> { return Observable.fromPromise(this.angularFire.auth.createUser({ email: user.email, password: user.password })); } |
如果您不想返回AngularFire2的