<ons-navigator>
要素のAngularディレクティブです。
Angular 2バインディング下では、<ons-navigator>
要素にはOnsNavigator
ディレクティブが適用されます。OnsNavigator
ディレクティブは、Angular 2のコンポーネントを読み込めるように<ons-navigator>
を拡張します。
<ons-navigator>
要素でAngular 2のコンポーネントを読み込むには、次のように[page]
バインディングを用います。
@Component({
selector: 'ons-page',
template: `
<ons-toolbar>
<div class="center">Page</div>
</ons-toolbar>
<div class="content">
...
</div>
`
})
class DefaultPageComponent { }
@Component({
selector: 'app',
template: `
<ons-navigator [page]="page"></ons-navigator>
`
})
class AppComponent {
page = DefaultPageComponent
}
<ons-navigator>
内に読み込むコンポーネントのselectorには必ずons-page
を指定してください。この例では、DefaultPageComponentのselectorはons-page
です。
<ons-navigator>
を参照するテンプレート内に<ons-navigator>
がある場合には、ViewChild
デコレータを使ってOnsNavigatorオブジェクトを代入することができます。OnsNavigatorオブジェクトのelement
プロパティには
@Component({
selector: 'app',
template: `
<ons-navigator [page]="page"></ons-navigator>
`
})
class AppComponent {
page = DefaultPageComponent
@ViewChild(OnsNavigator) navigator;
doSomething() {
this.navigator.element.pushPage();
}
}
<ons-navigator>
要素内で読み込まれたページのコンポーネントが<ons-navigator>
を参照するには、ViewChild()デコレータは使わずに代わりにDIを使います。
具体的には、ページのコンポーネントのコンストラクタの引数にOnsNavigatorを宣言すると、それが代入されます。
@Component({
selector: 'ons-page',
template: `
<ons-toolbar>
<div class="center">Page</div>
</ons-toolbar>
<div class="content">...</div>
`
})
class PageComponent {
constructor(navigator: OnsNavigator, private _params: Params) {
console.log(navigator);
}
}
Angular2以下ではpushPage()の引数にはページのURLではなくコンポーネントのクラスを指定することができます。
navigatorElement.pushPage(PageComponent);
pushPage()の第二引数のdataオプションには、読み込むページンポーネントに渡すデータを指定することができます。
const data = {foo: 'bar'};
navigatorElement.pushPage(PageComponent, {data: data});
@Component({
selector: 'ons-page',
template: `
<ons-toolbar>
<div class="center">Page</div>
</ons-toolbar>
<div class="content">...</div>
`
})
class PageComponent {
constructor(navigator: OnsNavigator, params: Params) {
console.log(params.data); // {foo: 'bar'}が表示される
}
}
Angular 2アプリケーションでは、読み込まれるコンポーネントをあらかじめリストにする必要があります。<ons-navigator>
要素に読み込まれるページコンポーネントを、NgModule
のdeclarations
オプションとentryComponents
オプションに追加することを忘れないでください。
@NgModule({
imports: [OnsenModule],
declarations: [AppComponent, DefaultPageComponent, PageComponent],
entryComponents: [DefaultPageComponent, PageComponent],
bootstrap: [AppComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
class AppModule { }
もしこれを忘れると、コンポーネントの読み込み時にエラーを出すことになります。
詳細は、Angular 2のAngular Modules - NgModuleを参照して下さい。
名前 | 型 / デフォルト値 | 概要 |
---|---|---|
page | String | ナビゲーターが初期化された時に表示するページを指定します。 Optional. 初期化時のみ有効 |
swipeable | Boolean | Enable iOS “swipe to pop” feature. (翻訳中) Optional. |
swipe-target-width |
String
20px |
スワイプの判定領域をピクセル単位で指定します。画面の端から指定した距離に達するとページが表示されます。 Optional. |
swipe-threshold |
Number
0.2 |
Specify how much the page needs to be swiped before popping. A value between 0 and 1 .
(翻訳中)
Optional.
|
animation |
String
default |
Animation name. Available animations are |
animation-options | Expression |
アニメーション時のduration, timing, delayをオブジェクトリテラルで指定します。e.g. {duration: 0.2, delay: 1, timing: 'ease-in'}
Optional.
|
名前 | 概要 |
---|---|
animationOptions |
アニメーション時のduration, timing, delayをオブジェクトリテラルで指定します。e.g. {duration: 0.2, delay: 1, timing: 'ease-in'}
|
pageLoader | PageLoaderインスタンスを格納しています。 |
page |
初期化時に読み込むページを指定します。page 属性で指定した値よりもpage プロパティに指定した値を優先します。
|
onDeviceBackButton | バックボタンハンドラ。 |
topPage | 現在のページを取得します。pushPage()やresetToPage()メソッドの引数を取得できます。 |
pages | Copy of the navigator’s page stack. (翻訳中) |
onSwipe | Hook called whenever the user slides the navigator (swipe-to-pop). It gets a decimal ratio (0-1) and an animationOptions object as arguments. (翻訳中) |
options | Default options object. Attributes have priority over this property. (翻訳中) |
options.animation |
Animation name. Available animations are |
options.animationOptions |
アニメーション時のduration, delay, timingを指定します。e.g. {duration: 0.2, delay: 0.4, timing: 'ease-in'}
|
options.callback | このメソッドによる画面遷移が終了した際に呼び出される関数オブジェクトを指定します。 |
シグネチャ | 概要 |
---|---|
popPage([options]) | 現在表示中のページをページスタックから取り除きます。一つ前のページに戻ります。 |
pushPage(page, [options]) | 指定したpageを新しいページスタックに追加します。新しいページが表示されます。 |
replacePage(page, [options]) | 現在表示中のページをを指定したページに置き換えます。 |
insertPage(index, page, [options]) | 指定したpageをページスタックのindexで指定した位置に追加します。 |
removePage(index, [options]) | 指定したインデックスにあるページを削除します。 |
resetToPage(page, [options]) | ページスタックをリセットし、指定したページを表示します。 |
bringPageTop(item, [options]) | 指定したページをページスタックの一番上に移動します。もし指定したページが無かった場合新しくpushされます。 |
現在表示中のページをページスタックから取り除きます。一つ前のページに戻ります。
返り値: 明らかにしたページを解決するPromiseを返します。
名前 | 型 | 概要 |
---|---|---|
options | Object | オプションを指定するオブジェクト。 |
options.animation | String |
Animation name. Available animations are |
options.animationOptions | String | アニメーション時のduration, delay, timingを指定します。e.g. {duration: 0.2, delay: 0.4, timing: ‘ease-in’} |
options.callback | Function | このメソッドによる画面遷移が終了した際に呼び出される関数オブジェクトを指定します。 |
options.data | Object | Custom data that will be stored in the new page element. (翻訳中) |
options.times | Number | Number of pages to be popped. Only one animation will be shown. (翻訳中) |
指定したpageを新しいページスタックに追加します。新しいページが表示されます。
返り値: 追加したページを解決するPromiseを返します。
名前 | 型 | 概要 |
---|---|---|
page | String |
pageのURLか、もしくは<template> で宣言したテンプレートのid属性の値を指定できます。
|
options | Object | オプションを指定するオブジェクト。 |
options.page | String |
Page URL. Only necessary if page parameter is null or undefined.
(翻訳中)
|
options.pageHTML | String |
HTML code that will be computed as a new page. Overwrites page parameter.
(翻訳中)
|
options.animation | String |
Animation name. Available animations are |
options.animationOptions | String |
アニメーション時のduration, delay, timingを指定します。e.g. {duration: 0.2, delay: 0.4, timing: 'ease-in'}
|
options.callback | Function | pushPage()による画面遷移が終了した時に呼び出される関数オブジェクトを指定します。 |
options.data | Object | Custom data that will be stored in the new page element. (翻訳中) |
現在表示中のページをを指定したページに置き換えます。
返り値: 新しいページを解決するPromiseを返します。
指定したpageをページスタックのindexで指定した位置に追加します。
返り値: 指定したページを解決するPromiseを返します。
名前 | 型 | 概要 |
---|---|---|
index | Number | スタックに挿入する位置のインデックスを指定します。 |
指定したインデックスにあるページを削除します。
返り値: 削除によって表示されたページを解決するPromiseを返します。
名前 | 型 | 概要 |
---|---|---|
index | Number | スタックから削除するページのインデックスを指定します。 |
ページスタックをリセットし、指定したページを表示します。
返り値: 新しいトップページを解決するPromiseを返します。
名前 | 型 | 概要 |
---|---|---|
options.pop | Boolean |
Performs ‘pop’ effect if true instead of ‘push’ or none. This also sets options.animation value to default instead of none .
(翻訳中)
|
指定したページをページスタックの一番上に移動します。もし指定したページが無かった場合新しくpushされます。
返り値: 新しいトップページを解決するPromiseを返します。
名前 | 型 | 概要 |
---|---|---|
item | String|Number | ページのURLかもしくはons-navigatorのページスタックのインデックス値を指定します。 |
名前 | 型 | 概要 |
---|---|---|
page | ページコンポーネントのクラスを指定します。 |
Onsen UIに関する質問は、Stack Overflowにてonsen-uiタグを付与してください。Onsen UIチームはあなたの問題解決をお手伝いします。
バグ報告や機能要望については、GitHub Issuesに記載をお願いいたします。
あわせて、下記の情報も参考にしてください。