无法解析LoginPage的所有参数:([object Object] ,?)

时间:2018-03-05 13:18:43

标签: angular authentication ionic-framework ionic3

离子框架:3.9.2

登录页面:

import { Component, OnInit } from '@angular/core';
import { NavController } from "ionic-angular";
import { FormControl, FormGroup, Validators } from "@angular/forms";
import { AuthProvider } from "../../providers/auth/auth";
import { HomePage } from "../home/home";

@Component({
selector: 'login',
  templateUrl: 'login.component.html'
})

export class LoginPage implements OnInit {
  constructor(public navCtrl: NavController,
              public authProvider: AuthProvider) {
  }

  loginForm = new FormGroup({
    login: new FormControl(null, [Validators.required]),
    password: new FormControl(null, [Validators.required])
  });

  ngOnInit() {
  }

  login() {
    this.authProvider.login(this.loginForm.value).subscribe(res => {
      if (res === 200) {
        this.navCtrl.setRoot(HomePage);
      }
    })
  }
}

AuthProvider包含使用API​​的auth方法。它的浮动问题。有时候所有工作,但经常显示此错误。

修改

AuthProvider代码:

@Injectable()
export class AuthProvider {
    public isLoggedIn: boolean;

  constructor(private httpClient: HttpClient,
              private configUtilService: ConfigUtilService,
              private app:App) {
    console.log('Hello AuthProvider Provider');
  }

  get navCtrl(): NavController {
    console.log(this.app.getRootNav());
    return this.app.getRootNav();
  }

  public checkLogin(): Observable<number> {
    // rest request
  }

  login(data: any): Observable<number> {
    // rest request
  }


  sessionEnd(): Observable<number> {
    // rest request
  }

  refreshSession() {
    this.checkLogin().subscribe(() => {
    })
  }

  startSessionTimer(){
    this.refreshSession();
  }

我删除了restAPI请求,因为它的简单httpClien请求包含来自服务器的返回登录信息

2 个答案:

答案 0 :(得分:0)

这是您提供AuthProvider服务的地方的问题。确保该服务在app.module或包含LoginPage组件声明的模块中提供。

答案 1 :(得分:0)

通过删除服务/提供商中的所有组件导入来解决问题。下次避免这个