Routing 聚合物中的导致路由参数出现问题

Routing 聚合物中的导致路由参数出现问题,routing,polymer,web-component,Routing,Polymer,Web Component,我有一个带有route config的单页应用程序,如下所示: <more-route name="projects" path="/projects"> <more-route name="projectroot" path="/noProjectSelected"></more-route> <more-route name="projectname" path="/:projectname"> <more

我有一个带有route config的单页应用程序,如下所示:

<more-route name="projects" path="/projects">
    <more-route name="projectroot" path="/noProjectSelected"></more-route>
    <more-route name="projectname" path="/:projectname">
        <more-route name="edittask" path="/edit/:task"></more-route>
        <more-route name="newtask" path="/newtask"></more-route>
    </more-route>
</more-route>
在projects视图元素中,我有另一个更多的路由选择器来显示嵌套的页面。其代码如下:

<more-route-selector selectedParams="{{params}}" flex fullbleed vertical layout>
    <core-pages flex fullbleed vertical layout>
        <div route="projectroot" flex>Hello</div>
        <task-list projectname="{{params.projectname}}" route="projectname" flex></task-list>
        <add-modify-task processType="add" projectname="{{params.projectname}}" route="newtask" flex></add-modify-task>
        <add-modify-task processType="modify" projectname="{{params.projectname}}" task="task" route="edittask" flex></add-modify-task>
    </core-pages>
</more-route-selector>
问题是控制台显示以下错误:在观察者回调期间捕获异常:TypeError:无法读取未定义的属性“projectname”。我知道我需要传入projectname param。但我当时没有那个情人

我希望它在默认情况下显示route=projectroot节。我的代码中有什么地方我做错了吗?有什么办法可以消除这个错误吗


提前感谢

作为一种解决方法,您可以覆盖navigateTo方法并提供缺少的参数

 var oldnavigate = MoreRouting.Route.prototype.navigateTo;
            MoreRouting.Route.prototype.navigateTo = function (params) {
                if (this.fullPath.indexOf(":projectname") >= 0) {
                    if (params == null) {
                        params = {};
                    }
                    params.projectname = getDefaultProjectName();
                }
                return oldnavigate.call(this, params);
            };
 var oldnavigate = MoreRouting.Route.prototype.navigateTo;
            MoreRouting.Route.prototype.navigateTo = function (params) {
                if (this.fullPath.indexOf(":projectname") >= 0) {
                    if (params == null) {
                        params = {};
                    }
                    params.projectname = getDefaultProjectName();
                }
                return oldnavigate.call(this, params);
            };