반응형
ionic3에서는 모바일 환경을 중심으로 단순화되고 있으며, ionic3에서는 향상된 네비게이션 기능을 위해 @IonicPage 데코레이터가 도입되었습니다. 먼저 네이게이션 기능을 살펴보도록 하겠습니다.
기본 네비게이션
src/app/app.html 파일을 열고 내용을 살펴보면, 아래와 같은 내용을 확인할 수 있습니다.<ion-nav [rooot]="rootPage"></ion-nav>ion-nav는 NavController의 하위 클래스 이며, 네이게이션 스택과 작업하기 위한 용도로 사용됩니다. ion-nav가 제대로 동작하려면 루트 페이지가 @component 인, 루트페이지를 초기에 로드하도록 설정해야 합니다.
import {StartPage} from 'start'
@Component({
template: '<ion-nav [root]="rootPage"></ion-nav>'
})
class MyApp {
// First page to push onto the stack
rootPage = StartPage;
}
다음으로 각 page 에서 네비게이션 Controller 에 접근하기 위하여 생성자를 통해 NavController를 주입받아 사용할 수 있습니다. page component는 셀렉터가 필요하지 않으며, ionic page는 자동으로 추가 될 수 있습니다.@Component({한 페이지에서 다른 페이지로 이동하려면 새 페이지를 NavController 에 push 하거나 pop합니다.
template: `
<ion-header>
<ion-navbar>
<ion-title>Login</ion-title>
</ion-navbar>
</ion-header>
<ion-content>Hello World</ion-content>`
})
export class StartPage {
constructor(public navCtrl: NavController) {
}
}
@Component({페이지에 <ion-navbar>가 있으면 root page 이며, root pag e가 아닌 경우 뒤로 버튼이 자동으로 추가되고 탐색 메뉴의 제목이 업데이트됩니다. 또는 돌아가고 싶지만 NavBar가없는 경우 스택에서 현재 페이지를 pop 할 수 있습니다.
template: `
<ion-header>
<ion-navbar>
<ion-title>Login</ion-title>
</ion-navbar>
</ion-header>
<ion-content>
<button (click)="goToOtherPage()">
Go to OtherPage
</button>
</ion-content>`
})
export class StartPage {
constructor(public navCtrl: NavController) {}
goToOtherPage() {
//push another page onto the history stack
//causing the nav controller to animate the new page in
this.navCtrl.push(OtherPage);
}
}
@Component({
template: `
<ion-header>
<ion-navbar>
<ion-title>Other Page</ion-title>
</ion-navbar>
</ion-header>
<ion-content>I'm the other page!</ion-content>`
})
class OtherPage {}
@Component({
template: `
<ion-content>
<button (click)="goBack()">
There's no place like home
</button>
</ion-content>`
})
class OtherPage {
constructor(public navCtrl: NavController) {}
goBack() {
this.navCtrl.pop();
}
}
Root Page 에서 네비게이팅 하는 방법
Root App Component 에서 Navigation 을 제어하려면 어떻게 해야 할까요? NavController Component는 Root App Component의 하위 요소이므로 NavController를 삽입 할 수 없습니다. 다른 방법으로 ion-nav 에 참조 변수를 추가하면 @ViewChild를 사용하여 NavController(NavController를 확장형태) 인 Nav 구성 요소의 인스턴스를 가져올 수 있습니다.@Component({
template: '<ion-nav #myNav [root]="rootPage"></ion-nav>'
})
export class MyApp {
@ViewChild('myNav') nav
rootPage = TabsPage;
// Wait for the components in MyApp's template to be initialized
// In this case, we are waiting for the Nav identified by
// the template reference variable #myNav
ngAfterViewInit() {
// Let's navigate from TabsPage to Page1
this.nav.push(LoginPage);
}
}
'Programming > Angular' 카테고리의 다른 글
ionic 하이브리드 앱 개발 - #6 ionic native (0) | 2020.04.20 |
---|---|
angular4에서 외부 js파일 import 하기 (1) | 2020.04.20 |
ionic 하이브리드 앱 개발 - #4 Component (0) | 2020.04.20 |
ionic 하이브리드 앱 개발 - #3 TypeSCript 기초 (0) | 2020.04.20 |
ionic 하이브리드 앱 개발 - #2 ionic 시작하기 (0) | 2020.04.20 |