路由器路径参数更改为 [object Object]?

Router path parameter changes to [object Object]?

policyClicked(policy: Policy){
    console.log(policy.name);
    this.router.navigate(['/policy',{projectId: this.project._id},{policyName: policy.name}]);
}

我正在尝试执行这段代码以路由到提供的路径。但我不断收到错误消息:

错误:无法匹配任何路由:'policy;projectId=uSpGcJFtxHK3vLGht/[object Object]'

好像最后一个参数丢失了之类的。我在那里放了一些日志以查看该值是否未定义但它在那里。这里也定义了路线。

const routes: RouterConfig = [
    {path: '', component: DashBoardHome},
    {path: 'project/:projectSearchResultId', component:     ProjectSearchResultsDetails},
    {path: 'search/:projectSearchValue', component: ProjectSearchResults},
    { path: 'login',        component: Login },
    { path: 'signup',       component: Signup },
    { path: 'recover',      component: Recover },
    {path: 'policy/:projectId/:policyName', component: PolicyDetails}
];

在您的第一个示例中,您传递了一个对象(大括号 {} 中的代码),因此 Javascript 将其解释为一个 [object],这就是您遇到奇怪错误的原因。通过不带大括号传递它,Javascript 可以使用实际文本。

你也可以考虑这样尝试:

var URL = '/policy/' + this.project._id + '/' + policy.name;
this.router.navigate(URL);