RC4 angular2

时间:2016-07-20 14:07:33

标签: angular angular2-routing

我对RC4路由器的行为有问题,因为我已将angular2版本从beta更新为RC4。 我在我的systemjs配置中有以下内容:

var ngVer = '@2.0.0-rc.4'; 
var routerVer = '@3.0.0-beta.1';

一个方法附加到按钮 Load Again ,它是home.component html的一部分,并且确实将路由器导航调用到同一个组件。 随着最近的angular2升级,如果在实例化组件时已经调用了同一组件的ngOnInit,则不会调用它。

我必须在路由之后再次实例化以支持我的应用程序中的业务逻辑。

app.routes.ts

import { provideRouter, RouterConfig }  from '@angular/router';
import { HomeComponent } from './home.component';

const routes: RouterConfig = [
  {
    path: '',
    redirectTo: '/home',
    pathMatch: 'full'
  },
  {
    path: 'home',
    component: HomeComponent
  }
];

export const appRouterProviders = [
  provideRouter(routes)
];

home.component.ts:

import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';

@Component({
  selector: 'my-home',
  templateUrl: 'app/home.component.html' 
})
export class HomeComponent implements OnInit {

  constructor(
    private router: Router) {
  }

  ngOnInit() {
    console.log('in ngOnInit');
  }

  loadAgain(text:string) {
    this.router.navigate(['/home']);
  }
}

home.component.html:

<div class="grid grid-pad">
  <div (click)="loadAgain()" class="col-1-4">
      <button style="cursor:pointer; ">Load Again</button>
  </div>  
</div>

即使该方法执行并调用路由器导航,也不会发生到homeComponent的路由。 我无法以任何方式销毁已初始化的组件。这曾经在2.0.0.beta1中工作,但在RC4中没有。 有人遇到过这种情况吗?

1 个答案:

答案 0 :(得分:0)

在当前路由器中,如果路径未更改或仅参数值已更改,则会重用组件。这是以前路由器版本的选择,但是是“默认”行为,目前没有选择退出。一些讨论存在一个悬而未决的问题,但尚未确定它们是否会实施。

https://github.com/angular/angular/issues/9811