我是棱角分明的新手,还有任何尝试为我正在进行的离子项目设置我的授权模块。
我越来越接近了,但是我遇到了一个问题,即使用了#aut;'我创建的服务。
我有一个使用以下登录方法的auth.service:
login(user){
this.http.post(this.API_ENDPOINT+'/authenticate', user)
.map(res => res.json())
.subscribe(user => {
this.storeUserCredentials(user);
return user;
})
}
在我的login.ts组件中,当我调用方法时:
constructor(public navCtrl: NavController, public navParams: NavParams, private auth: AuthenticationProvider) {
}
ionViewDidLoad() {
console.log('ionViewDidLoad LoginPage');
}
userLogin(f){
this.auth.login(f.value)
.subscribe(response => {
this.navCtrl.push('TabsPage');
})
}
}
我在' .subscribe'下面有一条红线。出现以下错误:
[ts] Property 'subscribe' does not exist on type 'void'.
any
我应该提一下,我的目标是点击身份验证端点,然后处理" storeUserCredentials(),然后导航到标签页。
答案 0 :(得分:1)
这是TypeScript错误。这表明存在人为错误。 login
方法不返回任何内容(void
类型),但预计会返回具有subscribe
方法的可观察对象。
在这种情况下,在login
中调用订阅是不可接受的,因为订阅应该在方法之外进行。
如果storeUserCredentials
是同步副作用,可以使用do
运算符处理:
login(user){
this.http.post(this.API_ENDPOINT+'/authenticate', user)
.map(res => res.json())
.do(user => {
this.storeUserCredentials(user);
})
}