AngularJS:url中的可选语言参数

Ich*_*Ich 6 javascript state angularjs angular-ui-router

我正在使用angularjs和UI-Router.我想配置指定所选语言的路由.虽然这部分路线应该是可选的.

我有以下状态:

{
    state: 'app',
    config: {
          abstract: true,
          url: '/{lang:(?:de|en)}',
          template: '<ui-view/>'
    }
}

{
    state: 'app.mainview',
    config: {
          url: '/mainview',
          templateUrl: 'app/mainview/mainview.html',
          controller: 'MainviewController',
          controllerAs: 'vm',
          title: 'Main View',
          settings: {
              pos: 1,
              displayName: 'Mainview',
              icon: 'code-array'
          }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在它唯一可以导航到主视图

example.com/en/mainview
Run Code Online (Sandbox Code Playgroud)

虽然我想配置ui-router以使以下所有路由都有效:

example.com/mainview
example.com/en/mainview
example.com/de/mainview
Run Code Online (Sandbox Code Playgroud)

我可以在开头设置一个带有可选语言参数的路由而不使用双斜杠吗?如果不是,您建议使用哪些替代方案?

Rad*_*ler 5

这里有一个详细的解决方案

在哪里你基本上介绍了父州

.state('root', {
    url: '/{lang:(?:en|de|cs)}',
    abstract: true,
    template: '<div ui-view=""></div>',
    params: {lang : { squash : true, value: 'en' }}
})
Run Code Online (Sandbox Code Playgroud)