【问题标题】:Router path parameter changes to [object Object]?路由器路径参数更改为[object Object]?
【发布时间】:2016-11-25 17:17:18
【问题描述】:
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}
];

【问题讨论】:

  • 因此,如果我将代码更改为:this.router.navigate(['/policy',this.project._id,policy.name]); 它可以工作。这是正确的做法吗?

标签: angularjs meteor angular-ui-router angular-meteor


【解决方案1】:

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

你也可以考虑这样尝试:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    相关资源
    最近更新 更多