Ionic httpClient response use toast
我将登录数据发送到服务,在login.ts吐司中未得到响应后,如何解决此问题?
我尝试在另一个功能不起作用的情况下尝试我的toast功能
this my function for load service login.ts:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | import { Component, OnInit } from '@angular/core'; import { NavController, MenuController, PopoverController } from"ionic-angular"; import { TabsInfluencerComponent } from '../../influencer/tabs/tabs'; import { RegisterComponent } from '../register/register'; import { ResetComponent } from '../reset/reset'; import { OfferComponent } from '../../advertiser/offer/offer'; import { ngForm } from '@angular/forms'; import { AuthService } from '../../../services/auth'; import { ToastController } from 'ionic-angular'; @Component({ templateUrl: 'login.component.html', }) export class LoginComponent implements OnInit { constructor( public nav:NavController, public menu:MenuController, public popover: PopoverController, private AuthService : AuthService, private toastCtrl: ToastController) { } responseData : any; public isChoose: boolean = false; public isshowP: boolean = false; //login and get data in service login(form: ngForm){ this.AuthService.login(form.value.email, form.value.password) .then(function(data) { if(data.success == true){ localStorage.setItem('userToken',data.token); localStorage.setItem('userData',JSON.stringify(data.user)); }else{ let toast = this.toastCtrl.create({ message: data.error, duration: 3000 }); toast.present(); } }) .catch(function(error) { console.log(error); }) } } |
this my service auth.ts:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | import { Injectable } from '@angular/core'; import { HttpClient, HttpHeaders } from '@angular/common/http'; import { map } from 'rxjs/operators' @Injectable() export class AuthService { private loginUrl : string = 'http://localhost:8000/api/login'; data : any; constructor(private http: HttpClient){} //function for login login(email : string, password :string){ const body = {email : email, password : password}; return new Promise(resolve => { this.http.post(this.loginUrl, body) .subscribe(data => { this.data = data; resolve(this.data); }); }); } register(email : string, password :string){ } } |
运行后,我有这样的错误:
TypeError:无法读取未定义
的属性'toastCtrl'
在这种情况下,login.ts中的
1 2 3 4 5 6 7 8 | .then(function(data) { ... let toast = this.toastCtrl.create({ message: data.error, duration: 3000 }); ... }) |
该如何解决?
您可以使用现在非常流行的箭头功能。
1 2 3 4 5 6 7 8 | .then((data) => { ... let toast = this.toastCtrl.create({ message: data.error, duration: 3000 }); ... }) |