Angular2 router.navigate重新加载应用程序

前端之家收集整理的这篇文章主要介绍了Angular2 router.navigate重新加载应用程序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的应用程序中定义了以下路由…
  1. app.components.ts
  2. @RouteConfig([
  3. {path:'/employees/...',name:'Employees',component:EmployeeComponent},...
  4.  
  5. employee.component.ts
  6. @RouteConfig([
  7. {path:'/',name:'EmployeeList',component:EmployeeListComponent,useAsDefault: true},{path:'/:id',name:'EmployeeDetail',component:EmployeeDetailComponent}
  8. ])

当我从EmployeeDetailComponent模板路由时……

  1. <button class="btn btn-default" [routerLink]="['EmployeeList']">Close</button>

应用程序按预期路由到员工列表页面.

但是,当我使用router.navigate进行路由时……

  1. // template
  2. <button class="btn btn-default" (click)="save()">Save</button>
  3.  
  4. // EmployeeDetailComponent
  5. saveEmployee() {
  6. this._employeeServer.updateEmployee(this.employee);
  7. this._router.navigate(['EmployeeList']);
  8. }

应用程序路由员工列表(如预期的那样),然后,片刻之后,应用程序完全重新加载(不像预期的那样).

知道为什么router.navigate的行为与routerLink不同吗?我错过了什么?

你可以使用这个指令:
  1. @Directive({
  2. selector: `click-stop-propagation`
  3. events: 'stopClick($event)'
  4. })
  5. class ClickStopPropagation {
  6. stopClick(event:Event) {
  7. event.preventDefault();
  8. event.stopPropagation();
  9. }
  10. }

并以这种方式应用它:

  1. <button class="btn btn-default"
  2. (click)="save()" click-stop-propagation>Save</button>

另一种解决方案是将事件传递给save方法

  1. <button class="btn btn-default"
  2. (click)="save($event)" click-stop-propagation>Save</button>

并用它来阻止事件传播:

  1. save(event) {
  2. this._employeeServer.updateEmployee(this.employee);
  3. this._router.navigate(['EmployeeList']);
  4. event.preventDefault();
  5. event.stopPropagation();
  6. }

猜你在找的Angularjs相关文章