Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular ionViewDidLoad()方法不使用';不行?_Angular_Email_Authentication_Ionic Framework_Ionic3 - Fatal编程技术网

Angular ionViewDidLoad()方法不使用';不行?

Angular ionViewDidLoad()方法不使用';不行?,angular,email,authentication,ionic-framework,ionic3,Angular,Email,Authentication,Ionic Framework,Ionic3,我正在尝试实现电子邮件身份验证,一切正常,但Methode ionViewDidLoad无法识别?我尝试了ionViewWillLoad()方法,但效果不太好 有人知道可能是什么问题吗 我的代码: home.ts 从'@angular/core'导入{Component}; 从“ionic angular”导入{NavController、IonicPage、NavParams、ToastController}; 从'angularfire2/auth'导入{AngularFireAuth};

我正在尝试实现电子邮件身份验证,一切正常,但Methode ionViewDidLoad无法识别?我尝试了ionViewWillLoad()方法,但效果不太好

有人知道可能是什么问题吗

我的代码: home.ts

从'@angular/core'导入{Component};
从“ionic angular”导入{NavController、IonicPage、NavParams、ToastController};
从'angularfire2/auth'导入{AngularFireAuth};
@IonicPage()
@组成部分({
选择器:“主页”,
templateUrl:'home.html'
})
导出类主页{
构造函数(私有afAuth:AngularFireAuth,私有toast:ToastController,
公共navCtrl:NavController,公共navParams:navParams){
}
ionViewDidLoad(){
this.afAuth.authState.subscribe(数据=>{
if(data.email&&data.uid){
这是toast.create({
消息:`欢迎使用应用程序名称,${data.email}`,
持续时间:5000
}).present();
}
})
}
}

如何调用主页组件?当实现ionViewDidLoad()的组件从NavController中推/弹出时,将调用ionViewDidLoad()钩子,如文档中所述:

如果组件的调用不是由NavController进行的,则可能不会调用挂钩。因此,您可以使用构造函数来调用您的函数

import {Component} from '@angular/core';
import {NavController, IonicPage, NavParams, ToastController} from 'ionic-angular';
import { AngularFireAuth} from 'angularfire2/auth';
@IonicPage()
@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {

  constructor(private afAuth: AngularFireAuth, 
              private toast: ToastController, 
              public navCtrl: NavController, 
              public navParams: NavParams) 
   {
     this.afAuth.authState.subscribe(data => {
      if (data.email && data.uid) {
        this.toast.create({
          message: `Welcome to APP_NAME, ${data.email}`,
          duration: 5000
        }).present();
      }
    })
  }

}

您的
ionViewDidLoad
实现看起来是正确的。您是否尝试在debugger或第一行的console.log(“something”)中单步执行它,以验证函数realy没有被调用?在我看来,
authState
从不发出或
date.email
和/或
date.uid
无效即使在我生成新页面时,ionViewDidLoad也不工作,所以我不知道出了什么问题?我生成了一个主页,该方法被初始化
code-ionviewdiload(){console.log('ionviewdiload HomePage');}
但它也不起作用?我是否必须在项目中的某个地方使用该方法?当您没有在控制台中获得输出时,还有另一个问题。ionViewDidLoad()在我创建的每个页面中都被调用(不是在组件等中)。我也遇到了同样的问题,ionViewDidLoad没有被调用。你找到解决办法了吗?
code异步登录(user:user){try{const result=wait this.afAuth.auth.signwithEmailandPassword(user.email,user.password);if(result){this.navCtrl.push('HomePage');}catch(e){console.error(e);}
我在login.ts文件中调用它,在该文件中我实现了登录功能。您打算如何使用构造函数来调用函数?好的,谢谢,这是可行的,但我认为这不是最好的解决方案。在您的情况下,行为与ionViewDidLoad()相同,但这并不能解决为什么ionViewDidLoad()钩子不能被确定调用的问题。不客气。我仍然在怀疑这个钩子是否能起作用。如果我发现了什么,我会回来找你;-)我在VisualStudio中导入了该项目,错误消失了。我以前使用过WebStorm:D