如何在提供者和页面之间传递数据?
How to pass data between provider and page?
我正在尝试从 google 地图提供商获取纬度和经度值并将它们传递到我的 ListPage,但我无法使用 NavController 来完成。
导入的导航控制器:
import {NavController, NavParams} from 'ionic-angular';
已导入 ListPage:
import { ListPage } from '../pages/list/list';
构造函数:
constructor(private navController: NavController, private navParams: NavParams)
代码:
this.navController.push(ListPage, {
lat: lat1, lon: lon1
});
一切看起来都很好,但我明白了
No Provider for NavController
错误。
更新:
糟糕,我没有注意到您正在使用服务。 Pablo Albaladejo 是对的。您不能在服务中使用 NavController,因为这可能会破坏导航堆栈或使其变得非常混乱。
一种四处走动的方法是按照 Pablo 的建议加载 App
。
另一种方法是使用 Ionic 提供的 Events
在视图之间进行通信。我个人喜欢它,因为这给了我更多的自由,而不是只将服务绑定到一个视图。
https://ionicframework.com/docs/api/util/Events/
原版
你走在正确的道路上。您只需要导入 NavParams
import { NavController, NavParams } from 'ionic-angular';
施工人员:
constructor(private navController: NavController, private navParams: NavParams)
所以在你推送视图的情况下
this.navController.push(ListPage, {
lat: lat1, lon: lon1
});
现在您可以访问参数:
this.lat = navParams.get('lat');
this.lot = navParams.get('lot');
无法从 @Injectable()
构造函数调用 NavController
。
1) 从构造函数中删除 private navController: NavController
。
2) 添加 import { App } from 'ionic-angular';
和
constructor(public connectivityService: Connectivity, public app: App)
3) 添加此功能
get navCtrl(): NavController {
return this.app.getActiveNav();
}
4)
this.navCtrl.push(ListPage, { lat: lat1, lon: lon1 });
5) 在 ListPage
constructor(public navParams: NavParams){
let lat = this.navParams.get('lat');
let lon = this.navParams.get('lon');
console.log(lat,lon);
}
我正在尝试从 google 地图提供商获取纬度和经度值并将它们传递到我的 ListPage,但我无法使用 NavController 来完成。
导入的导航控制器:
import {NavController, NavParams} from 'ionic-angular';
已导入 ListPage:
import { ListPage } from '../pages/list/list';
构造函数:
constructor(private navController: NavController, private navParams: NavParams)
代码:
this.navController.push(ListPage, {
lat: lat1, lon: lon1
});
一切看起来都很好,但我明白了
No Provider for NavController
错误。
更新:
糟糕,我没有注意到您正在使用服务。 Pablo Albaladejo 是对的。您不能在服务中使用 NavController,因为这可能会破坏导航堆栈或使其变得非常混乱。
一种四处走动的方法是按照 Pablo 的建议加载 App
。
另一种方法是使用 Ionic 提供的 Events
在视图之间进行通信。我个人喜欢它,因为这给了我更多的自由,而不是只将服务绑定到一个视图。
https://ionicframework.com/docs/api/util/Events/
原版
你走在正确的道路上。您只需要导入 NavParams
import { NavController, NavParams } from 'ionic-angular';
施工人员:
constructor(private navController: NavController, private navParams: NavParams)
所以在你推送视图的情况下
this.navController.push(ListPage, {
lat: lat1, lon: lon1
});
现在您可以访问参数:
this.lat = navParams.get('lat');
this.lot = navParams.get('lot');
无法从 @Injectable()
构造函数调用 NavController
。
1) 从构造函数中删除 private navController: NavController
。
2) 添加 import { App } from 'ionic-angular';
和
constructor(public connectivityService: Connectivity, public app: App)
3) 添加此功能
get navCtrl(): NavController {
return this.app.getActiveNav();
}
4)
this.navCtrl.push(ListPage, { lat: lat1, lon: lon1 });
5) 在 ListPage
constructor(public navParams: NavParams){
let lat = this.navParams.get('lat');
let lon = this.navParams.get('lon');
console.log(lat,lon);
}