gpt4 book ai didi

angular - 使用 Firebase 和 AngularFire2 注册用户

转载 作者:太空狗 更新时间:2023-10-29 18:20:42 24 4
gpt4 key购买 nike

在我的 app.component.ts 中,我使用此函数使用 angularFire2 将用户注册到 firebase。但是,我收到“属性‘订阅’在类型‘无效’上不存在”的错误。

register() {
this.userService.registerUser(this.model)
.subscribe(
data => {
console.log('Registration successful')
},
error => {
this.loading = false;
});
}

在我的 userService.ts 中,我有以下调用从 firebase 获取数据

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')?

最佳答案

最直接的选择是返回 promise :

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;
});
}

但是,如果您想返回一个可观察对象,可以使用 fromPromise :

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;
}));
}

如果您打算在 registerUser 中使用 catch 来记录错误,您应该重新抛出错误,以便它可以被调用者捕获和处理。如果您不需要日志记录,只需将其保留,调用者可以处理任何错误(通过可观察对象):

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 的 FirebaseAuthState,您可以使用 then 返回其他内容作为 promise 的解析值(这将是可观察的)。

关于angular - 使用 Firebase 和 AngularFire2 注册用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41790931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com