首页 文章

RC4 angular2中的路线导航问题

提问于
浏览
1

我有一个RC4路由器行为的问题,因为我已经将beta2版本从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

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

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

相关问题