Typescript 如何在Angular2中键入路线图?

Typescript 如何在Angular2中键入路线图?,typescript,angular,angular2-routing,Typescript,Angular,Angular2 Routing,我在RouteConfig中定义了routeParam: { path: '/user/:id', name: 'User', component: User } 在我的代码中,我调用路由器的导航方法: userSelected(userid) { this._router.navigate(['User', { id: userid }]); } 编译器告诉我以下内容: 类型为“(string |{id:any;})[]”的参数不能分配给类型为“string”的参数 如何键入参数i

我在RouteConfig中定义了routeParam:

{ path: '/user/:id', name: 'User', component: User }
在我的代码中,我调用路由器的导航方法:

userSelected(userid) {
    this._router.navigate(['User', { id: userid }]);
}
编译器告诉我以下内容:

类型为“(string |{id:any;})[]”的参数不能分配给类型为“string”的参数


如何键入参数
id
,以便编译器将其检测为一个数字?

我将直接使用此参数。_router.navigateByUrl('user/')+userid)

{id:id}
id是从方法传递的吗?是的,id是一个方法参数
yourMethod(id:number){this.\u router.navigate(['User',{id:id}]);}
现在是这样的:
类型的参数'(string{id:number;}])[]不能分配给类型为'string'的参数。
您使用的是什么版本的angular2?在2.0.0-beta.7中,router.navigate采用any[]类型的参数。因此,不应进行类型检查:-/可以,但由于必须对URL进行硬编码,因此失去了灵活性。文档中也不赞成这种方法。:)你能解释一下会失去什么样的灵活性吗?您仍然可以选择使用动态用户Id。这里唯一的硬编码内容是“user”[Name],它被“user[path]”替换。两者都是硬编码的:)他使用的方法为路径配置提供了一个语义名称。他用这个名字来指路线。他可以在以后更改使用该路径配置的URL,而无需更改应用程序中的任何其他内容。如果您使用navigateByUrl,并且希望将url的“/user”部分更改为“/person”,则还必须在使用navigateByUrl的所有位置更改字符串。:)明白了,基本上名字改变并不重要,但路径可能会改变。感谢您的回复:)