У меня проблема с Rxjs подписаться , он был вызван дважды, я уже ищу в google и StackOverflow, есть уже заданный вопрос, но ни один из вопросов не подходит для моего случая, ятакже не нашел, что не так с моим кодом.
Вот мой код: login.ts
import {Component} from '@angular/core';
import {
AlertController,
IonicPage,
LoadingController,
MenuController,
NavController,
NavParams,
ToastController
} from 'ionic-angular';
import { Storage } from '@ionic/storage';
import {AuthServiceProvider} from "../../providers/auth-service/auth-service";
import {DashboardPage} from "../dashboard/dashboard";
import {SignupPage} from "../signup/signup";
import {FormControl, FormGroup, Validators} from "@angular/forms";
import {Network} from "@ionic-native/network";
@IonicPage()
@Component({
selector: 'page-login',
templateUrl: 'login.html',
})
export class LoginPage{
loginForm: FormGroup;
user:any = new Object();
constructor(
public navCtrl: NavController,
public navParams: NavParams,
private authService:AuthServiceProvider,
private alertCtrl: AlertController,
public storage: Storage,
public menuCtrl: MenuController,
private loading: LoadingController,
private network: Network,
private toast: ToastController
) {
this.menuCtrl.enable(false,'menu');
this.loginForm= new FormGroup({
mobile: new FormControl('', [Validators.required]),
password: new FormControl('', [Validators.required]),
});
}
ionViewDidLoad() {
console.log("called")
}
login() {
if(this.network.type === 'none' || this.network.type === 'unknown'){
this.toast.create({
message:`You are offline, please connect your wifi or 3g`,
position:'top',
duration:3000
}).present();
} else {
let spinner = this.loading.create({
content: 'Please wait...'
});
spinner.present();
this.authService.userLogin(this.user)
.subscribe(
response => {
console.log(response);
if (response.status === "ok") {
console.log(response.status);
this.authService.isLoggedIn(response);
this.navCtrl.setRoot(DashboardPage);
} else {
console.log(response.status);
let alert = this.alertCtrl.create({
title: response.status,
subTitle: response.msg,
buttons: ['Dismiss']
});
alert.present()
}
spinner.dismiss();
})
}
}
}
, когда аутентификациясбой, он показывает предупреждение об ошибке дважды, а также, когда аутентификация проходит успешно, он также показывает предупреждение о сбое, а затем сразу же успешно и перейти на страницу панели мониторинга.
Вот мой auth-service.ts
userLogin(user):Observable<any>{
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})
};
let ttl = 60*60*24*30;
let delay = 'all';
const url = ApiEndPoint+'customer_login';
let req = this.http
.post(url, user,httpOptions)
.map(data=> {
return data;
})
.catch((error:any)=>{
return Observable.throw({Error:error});
});
return this.cache.loadFromDelayedObservable(url, req,'user',ttl,delay);
}
Правильное направление будет высоко оценено. Спасибо