路由器在 angular2-rc1 中不工作
Router not working in angular2-rc1
我正在尝试在 angular2 中使用路由器。我用一个 link 重定向到 DesignerComponent
并将 page._id
作为 RouteParams
传递。
该代码在 angular2-beta 中正常工作。
下面是我的代码:
pages.component.ts
import { Component, OnInit ,Input} from '@angular/core';
import {SearchPipe} from './../../shared/pipes/search-pipe.pipe';
import { GlobalObjectsService} from './../../shared/services/global/global-objects.service';
import { Router,Routes , ROUTER_DIRECTIVES, ROUTER_PROVIDERS} from '@angular/router';
import { DesignerComponent } from './../../+designer/designer.component';
@Component({
moduleId: module.id,
selector: 'app-pages',
pipes: [SearchPipe],
directives: [ROUTER_DIRECTIVES],
providers: [ROUTER_PROVIDERS],
templateUrl: 'pages.component.html',
styleUrls: ['pages.component.css']
})
@Routes([
{path: '/designer', component: DesignerComponent}
])
export class PagesComponent implements OnInit {
@Input() pages:any;
constructor(private router:Router) {
}
ngOnInit() { }
selectPage(page_id:string){
}
}
在我看来,我做了以下事情:
<div [routerLink]="['Designer',{page_id: page._id}]" class="btn btn-xs btn-success" title="Design Page">
<i class="fa fa-eye fa-fw"></i>
</div>
但它向我显示以下错误:
Argument of type '{ path: string; name: string; component: typeof DesignerComponent; }[]' is not assignable to parameter of type 'RouteMetadata[]'
我只想在单击 link 时重定向到 DesignerComponent
,并以 page_id 作为参数。
有任何输入吗?
新的 RouteDefinition
没有 name
属性。所以,只需像这样删除它:
@Routes([
{path: '/designer', component: DesignerComponent}
])
视图将是:
<div [routerLink]="['/designer',{page_id: page._id}]" ... >
<a [routerLink]="['/designer',{page_id: page._id}]" ... >
在路由元数据中添加参数:
@Routes([
{path: '/designer/:page_id', component: DesignerComponent}
])
直接在routerLink中使用page._id,不带对象:
[routerLink]="['/designer',page._id]"
更新
正在从组件访问参数值:
constructor(curr: RouteSegment) {
let itemID = curr.getParam("page_id");
}
我正在尝试在 angular2 中使用路由器。我用一个 link 重定向到 DesignerComponent
并将 page._id
作为 RouteParams
传递。
该代码在 angular2-beta 中正常工作。
下面是我的代码:
pages.component.ts
import { Component, OnInit ,Input} from '@angular/core';
import {SearchPipe} from './../../shared/pipes/search-pipe.pipe';
import { GlobalObjectsService} from './../../shared/services/global/global-objects.service';
import { Router,Routes , ROUTER_DIRECTIVES, ROUTER_PROVIDERS} from '@angular/router';
import { DesignerComponent } from './../../+designer/designer.component';
@Component({
moduleId: module.id,
selector: 'app-pages',
pipes: [SearchPipe],
directives: [ROUTER_DIRECTIVES],
providers: [ROUTER_PROVIDERS],
templateUrl: 'pages.component.html',
styleUrls: ['pages.component.css']
})
@Routes([
{path: '/designer', component: DesignerComponent}
])
export class PagesComponent implements OnInit {
@Input() pages:any;
constructor(private router:Router) {
}
ngOnInit() { }
selectPage(page_id:string){
}
}
在我看来,我做了以下事情:
<div [routerLink]="['Designer',{page_id: page._id}]" class="btn btn-xs btn-success" title="Design Page">
<i class="fa fa-eye fa-fw"></i>
</div>
但它向我显示以下错误:
Argument of type '{ path: string; name: string; component: typeof DesignerComponent; }[]' is not assignable to parameter of type 'RouteMetadata[]'
我只想在单击 link 时重定向到 DesignerComponent
,并以 page_id 作为参数。
有任何输入吗?
新的 RouteDefinition
没有 name
属性。所以,只需像这样删除它:
@Routes([
{path: '/designer', component: DesignerComponent}
])
视图将是:
<div [routerLink]="['/designer',{page_id: page._id}]" ... >
<a [routerLink]="['/designer',{page_id: page._id}]" ... >
在路由元数据中添加参数:
@Routes([
{path: '/designer/:page_id', component: DesignerComponent}
])
直接在routerLink中使用page._id,不带对象:
[routerLink]="['/designer',page._id]"
更新
正在从组件访问参数值:
constructor(curr: RouteSegment) {
let itemID = curr.getParam("page_id");
}