Rob*_*Rob 8 navigation typescript nativescript angular
我想导航到另一个带参数的页面,但我似乎无法找到解释它的文档.我正在使用路线.这是我的路线的一个例子.
import { RouterConfig } from '@angular/router';
import { nsProvideRouter } from 'nativescript-angular/router';
import { MainPage } from './pages/main/main.component';
import { DetailsPage } from './pages/details/details.component';
export const routes: RouterConfig = [
{ path: "", component: MainPage },
{ path: "details", component: DetailsPage }
];
export const APP_ROUTER_PROVIDERS = [
nsProvideRouter(routes, {})
];
Run Code Online (Sandbox Code Playgroud)
我想使用在MainPage上选择的参数导航到DetailsPage.这是MainPage的摘录:
import { Page } from 'ui/page';
import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';
import { Entity } from '../../shared/entity/entity';
@Component({
selector: "main",
templateUrl: "pages/main/main.html",
styleUrls: ["pages/main/main-common.css", "pages/main/main.css"]
})
export /**
* MainPage
*/
class MainPage {
constructor(private _page: Page, private _router: Router) { }
onNavigate(selectedItem: Entity) {
// Can't figure out how to get selectedItem to details…
this._router.navigate(["/details"]);
};
}
Run Code Online (Sandbox Code Playgroud)
插入:下面我添加了详细信息类.
import { Component, OnInit, OnDestroy } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { Entity } from '../../shared/entity/entity';
import { EntityModel } from '../../shared/entity/entity.model';
@Component({
selector: "detail",
templateUrl: "pages/detail/detail.html",
styleUrls: ["pages/detail/detail-common.css", "pages/detail/detail.css"],
providers: [EntityModel]
})
export /**
* DetailPage
*/
class DetailPage implements OnInit, OnDestroy {
entity: Entity;
private _paramSubcription: any;
constructor( private _activatedRoute: ActivatedRoute, private _entityModel: EntityModel ) { }
ngOnInit() {
console.log("detail ngOnInit was called.");
let entityName: string;
this._paramSubcription = this._activatedRoute.params.subscribe(params => entityName = params['id']);
this.entity = this._entityModel.entityNamed(entityName);
};
ngOnDestroy() {
if (this._paramSubcription) {
this._paramSubcription.unsubscribe();
};
};
}
Run Code Online (Sandbox Code Playgroud)
这是Detail的模板:
<ActionBar [title]="entity.name"></ActionBar>
<ListView [items]="entity.items">
<Template let-item="item">
<StackLayout>
<Label [text]="item.name"></Label>
<Label [text]="item.description"></Label>
</StackLayout>
</Template>
</ListView>
Run Code Online (Sandbox Code Playgroud)
我发现的类象NavigationContext和方法navigateTo及navigateFrom,但我还没有想出如何发送NavigationContext到Page.或者,如果它甚至应该以这种方式发送.所以问题是,Routing用于导航到另一个页面(不是对话框)和传递参数的最佳方法是什么?
Dor*_*man 10
你需要表明你应该在这条路线中有参数:
export const routes: RouterConfig = [
{ path: "", component: MainPage },
{ path: "details/:id", component: DetailsPage }
];
Run Code Online (Sandbox Code Playgroud)
然后,你可以这样传递:
this._router.navigate(["/details", selectedItem.id]);
Run Code Online (Sandbox Code Playgroud)
在您的服务中,DetailsPage您可以将参数作为可观察的参数获取ActivatedRoute.
| 归档时间: |
|
| 查看次数: |
7702 次 |
| 最近记录: |