我还是学习者。不仅在Ionic中,在Angular中也是如此。
我已经编写了一些页面,并希望在用户可以切换所有主页的每个页面上添加页脚。写完第二页后,我看到为此提供服务会很好,因为我再次使用相同的方法。
以下是我的服务现在的样子:
export class Navigation {
public navCtrl: NavController;
onLoadHome(){
this.navCtrl.push(HomePage);
}
}
当我现在在HTML模板中调用Navigator.onLoadHome()时,我收到以下错误: 无法读取属性'推送'未定义的。
所以我知道我的应用找到了服务并找到了方法。但我的navCtrl未定义。我通过以下方式尝试了另一种方式:
export class Navigation {
constructor(private navCtrl: NavController){}
onLoadHome(){
this.navCtrl.push(HomePage);
}
}
现在我收到另一条错误消息:无法解析导航的所有参数。
我真的不知道如何做到这一点。我希望你能帮助我。
(顺便说一下。我已经缩短了课程。但是其他方法也像onLoadHome一样,只针对其他页面。)
答案 0 :(得分:3)
这不是在页面之间导航的好方法,但我希望这可以帮助你
在您要使用服务的页面中,您必须导入服务,然后将其设置为
public mNavigation: Navigation;
constructor(public navCtrl: NavController, public navParams: NavParams) {
this.mNavigation = new Navigation(navCtrl)
}
如果您想浏览,只需致电this.mNavigation.onLoadHome();
更好的方法是,您应该在服务中使用Nav
App
代替NavCtrl
。看起来像这样
import { App } from 'ionic-angular';
@Injectable()
export class NavigationProvider {
constructor(public app: App) {
}
onLoadHome(){
this.app.getActiveNav().push(HomePage);
}
}
然后你的页面会像这样
constructor(public navCtrl: NavController,
public mNavigationProvider: NavigationProvider,
public navParams: NavParams) {
}
onNavigate() {
this.mNavigationProvider.onLoadHome();
}