Angular 通过ngOnInit()运行函数不适用于ionic 4
所以,我想在应用加载后尽快运行一个函数。我在爱奥尼亚4号上遇到了麻烦 我尝试使用ionViewDidLoad,但ionic4中不推荐使用ionViewDidLoad,因此我尝试使用ngOnInit,但这对我也不起作用 我试着通过点击一个按钮来获取纬度和经度,它工作正常,但我希望它在我的应用程序启动时自动显示出来 我的TS代码:Angular 通过ngOnInit()运行函数不适用于ionic 4,angular,typescript,ionic-framework,ionic-native,ionic4,Angular,Typescript,Ionic Framework,Ionic Native,Ionic4,所以,我想在应用加载后尽快运行一个函数。我在爱奥尼亚4号上遇到了麻烦 我尝试使用ionViewDidLoad,但ionic4中不推荐使用ionViewDidLoad,因此我尝试使用ngOnInit,但这对我也不起作用 我试着通过点击一个按钮来获取纬度和经度,它工作正常,但我希望它在我的应用程序启动时自动显示出来 我的TS代码: import { Component, OnInit } from '@angular/core'; import { Geolocation } from '@ioni
import { Component, OnInit } from '@angular/core';
import { Geolocation } from '@ionic-native/geolocation/ngx';
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
})
export class HomePage implements OnInit {
lati: any;
long: any;
constructor(private geolocation: Geolocation) {}
ngOnInit() {
this.geolocation.getCurrentPosition().then((resp) => {
this.lati = resp.coords.latitude;
this.long = resp.coords.longitude;
}).catch((error) => {
console.log('Error getting location', error);
});
}
}
我的HTML代码只是必要的部分:
<p id="lat">Latitude is {{lati}}</p>
<p id="lon">Longitude is {{long}}</p>
通常,这会导致如下结果:
纬度是我的纬度
经度是我的经度
但是,它不显示我的纬度和经度,只显示段落内容
我尝试过用相关关键字搜索,并实现了我找到的任何东西,但这还远远不够。考虑到离子4仍然是相当新的,没有太多的帮助可用
请帮助我,以便应用程序在启动时立即返回经度和纬度。如果您将页面放入堆栈后返回页面,则不会触发此操作
您可以使用下一个生命周期挂钩之一:
ionViewWillEnter — 在进入页面时激发,如果页面从堆栈中返回
IonViewDiCenter — 如果从堆栈中返回,则在进入后也会被激发这对我很有效:
我在我的page.ts中添加了一个IonViewDiCenter函数,该函数在路由到的组件已设置动画时启动
有关更多信息,请参见
你有没有试过使用断点来查看你是否收到了有效的数据?@Batajus我仍然在学习这些东西。请你解释一下怎么做,这样我就可以试着去做了?另外,我想指出,当我通过点击按钮触发的功能启动Cordova Geolocation时,我收到了有效的坐标。我刚刚尝试了你用ionic 4显示的代码,它对我来说很好,所以很难帮助…@AJT_82我知道它应该工作,但显然不工作。请尝试在StackBlitz中重新创建这个问题,我很高兴看到它:ionic 4中删除了离子生命周期挂钩,以便更喜欢ng挂钩。不是很有帮助,不过还是要谢谢你!不,离子4的生命周期仍在Github中。现在只有ionViewDidLoad已替换为Ninit。另外,两个导航防护装置IonViewCanCenter和ionViewCanLeave也被移除,因为Angular Router提供路由防护。因此,如果我要求使用ionViewWillEnter和ionViewDidEnter解决上述问题,您会提供吗?对不起,我的无知。是的。。。你有没有试着用ionViewWillEnter,ionViewDidEnter来修复它?嗯,我刚刚遇到了这个解决方案,没有,它不起作用。
ionViewDidEnter() {
console.log(" loading map");
setTimeout(this.loadMap.bind(this), 1000);
console.log(" loaded map");
}