通过ngOnInit()运行函数不适用于ionic 4

时间:2019-01-18 15:36:08

标签: angular typescript ionic-framework ionic-native ionic4

因此,我想在应用程序加载后立即运行一个函数。我在离子4中遇到问题。

我尝试使用ionViewDidLoad,但是在ionic4中已弃用,因此我尝试使用ngOnInit,这对我也不起作用。

我试图通过单击按钮来获取经度和纬度,并且它可以正常工作,但是我希望它在应用启动时自动显示。

我的TS代码:

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>

通常这会导致类似以下情况:

纬度为MY_LATITUDE
经度是MY_LONGITUDE

但是它没有显示我的纬度和经度(仅显示了段落内容)。

我尝试使用相关的关键字进行搜索,并实施了我发现的所有内容,但还远远不够。 (考虑离子4仍然很新,并且没有太多帮助。)

请帮助我,以便应用启动后该应用返回经纬度。

2 个答案:

答案 0 :(得分:0)

ngOnInit will not be triggered if you come back to a page after putting it into a stack...

You can use one of next Lifecycle hooks:

ionViewWillEnter — Fired when entering a page (also if it’s come back from stack)

ionViewDidEnter — Fired after entering (also if it’s come back from stack)

答案 1 :(得分:0)

这对我有用:

我在page.ts中添加了一个 ionViewDidEnter 函数,当被路由到的组件具有动画效果时,该函数被触发。

有关更多信息,您可以查看Life Cycle Hooks

 ionViewDidEnter() {
    console.log(" loading map");
    setTimeout(this.loadMap.bind(this), 1000);
    console.log(" loaded map");
  }