Sam*_*ath 6 typescript ionic-framework ionic2 ionic3 angular
你能告诉我下面两种方法的区别是什么吗?我应该在哪一刻使用它?
book.ts
this.app.getRootNav().push('FromBook', { bookId: this.data.id })
this.navCtrl.push('FromBook', { bookId: this.data.id });
Run Code Online (Sandbox Code Playgroud)
当我们使用下面的内部组件时,它有时会起作用.有时它不是.为什么这种不同的行为有上述2种导航方法?
笔者-page.html中
<div>
<book *ngFor="let book of authorData?.books" [data]="book"></book>
</div>
Run Code Online (Sandbox Code Playgroud)
两种方法都将新页面添加到当前Nav组件,唯一的区别是哪个Nav Controller.
如果您的应用是标签页,有多个标签,则每个标签都有自己的导航组件.这就是为什么如果您尝试从子选项卡内部推送页面,this.navCtrl.push(ThePage)
如果切换到另一个选项卡,则不会显示新页面,但如果您返回上一个选项卡,该页面仍然可见.那是因为页面被推送到子Nav组件,单个选项卡中的Nav组件.
如果您使用this.app.getRootNav().push(ThePage)
,则将新页面推送到根应用程序的Nav组件,因此无论您正在执行的组件是否具有自己的Nav组件,都将使用Root组件中的Nav.
选项卡只是一个示例,当您尝试从任何覆盖组件推送页面时(弹出窗口,模态,警报等),该选项卡也是有效的
这包含在文档中:
从叠加组件导航
如果您想从叠加组件(弹出窗口,模态,警报等)导航,该怎么办?在这个例子中,我们在我们的应用程序中显示了一个弹出框.从popover中,我们将使用getRootNav()方法在我们的应用程序中获得根NavController的引用.
Run Code Online (Sandbox Code Playgroud)import { Component } from '@angular/core'; import { App, ViewController } from 'ionic-angular'; @Component({ template: ` <ion-content> <h1>My PopoverPage</h1> <button ion-button (click)="pushPage()">Call pushPage</button> </ion-content> ` }) class PopoverPage { constructor( public viewCtrl: ViewController public appCtrl: App ) {} pushPage() { this.viewCtrl.dismiss(); this.appCtrl.getRootNav().push(SecondPage); } }
归档时间: |
|
查看次数: |
4667 次 |
最近记录: |