Dart 角度2省道路径定位策略

Dart 角度2省道路径定位策略,dart,angular2-dart,Dart,Angular2 Dart,使用HashLocationStrategy刷新angular2省道页面效果良好,因为它会打开完全相同的视图 使用PathLocationStrategy(tomcat服务器配置为服务index.html)刷新页面适用于不带参数的url,但不适用于带参数的url localhost:8090/menu1//refresh-works localhost:8090/menu2/paramVal//不刷新 tomcat web.xml已经发布 <error-page> <

使用HashLocationStrategy刷新angular2省道页面效果良好,因为它会打开完全相同的视图

使用PathLocationStrategy(tomcat服务器配置为服务index.html)刷新页面适用于不带参数的url,但不适用于带参数的url

localhost:8090/menu1//refresh-works localhost:8090/menu2/paramVal//不刷新

tomcat web.xml已经发布

  <error-page>
    <error-code>404</error-code>
    <location>/index.html</location>
  </error-page>
app_component.dart

import 'package:angular2/core.dart';
import 'package:angular2/router.dart';
import 'package:angular2/angular2.dart';
import 'package:mboxes/menu1.dart';
import 'package:mboxes/menu2.dart';

@Component(
    selector: 'my-app',
    templateUrl: 'app_component.html',
    directives: const [ROUTER_DIRECTIVES],
    providers: const[ROUTER_PROVIDERS, ])

@RouteConfig(const [
  const Route(
      path: '/menu1',
      name: 'Menu1',
      component: Menu1Component,
      useAsDefault: true),
  const Route(
      path: '/menu2/:param', name: 'Menu2', component: Menu2Component)
])
class AppComponent {}
app_component.html

<div class="container">
    <nav>
        <ul>
            <li>
                <a [routerLink]="['Menu1']">Menu1</a>
            </li>
            <li> <a [routerLink]="['Menu2', {'param':'paramVal'}]">Menu2</a> </li>
        </ul>
    </nav>

    <div style="padding-left: 200px; padding-top: 200px; padding-bottom: 50px">
    <router-outlet></router-outlet>
    </div>
</div>
菜单2.省道

import 'package:angular2/core.dart';
import 'package:angular2/router.dart';
@Component(
    selector: 'menu2',
    template: ''' menu 2 was clicked'''
)
class Menu2Component implements OnInit {
  final RouteParams _routeParams;
  Menu2Component(this._routeParams);
  ngOnInit()  {
    var val  = _routeParams.get('param');
    print  ("passed param is " +  val);
  }
}
我认为您不需要使用404来服务index.html,而应该使用以下内容设置servlet映射*


另请参见

应用程序是在根文件夹中提供服务还是heros是详细信息文件夹。通常,除了配置PathLocationStrategy default并将请求重写为不存在的URL到index.html之外,无需其他操作。我只有两个文件夹—web文件夹包含index.html,而lib文件夹包含所有其他组件。应用程序正从根文件夹提供服务。带有参数的URL不会刷新。没有参数的URL可以刷新。您可以更新问题以更清楚地显示您看到的错误吗?当它不起作用时意味着什么?
import 'package:angular2/core.dart';
import 'package:angular2/router.dart';
@Component(
    selector: 'menu1',
    template: ''' menu 1 was clicked '''
)
class Menu1Component {}
import 'package:angular2/core.dart';
import 'package:angular2/router.dart';
@Component(
    selector: 'menu2',
    template: ''' menu 2 was clicked'''
)
class Menu2Component implements OnInit {
  final RouteParams _routeParams;
  Menu2Component(this._routeParams);
  ngOnInit()  {
    var val  = _routeParams.get('param');
    print  ("passed param is " +  val);
  }
}