简体   繁体   English

angular2 RC.1:router.navigate()无法正常工作

[英]angular2 RC.1 : router.navigate() not working

I recently upgraded my app from Angular 2.0.0-beta.12 to Angular 2.0.0-rc.1 . 我最近将我的应用程序从Angular 2.0.0-beta.12升级Angular 2.0.0-rc.1 I am using router-deprecated module for routing. 我正在使用router-deprecated模块进行路由。 After default login route is loaded, router.navigate(['Newgateway']) doesn't seem to work correctly. 加载默认登录路由后, router.navigate(['Newgateway'])似乎无法正常工作。

RootComponent 根组件

import { Component, provide } from '@angular/core';
import {Router, RouteConfig, ROUTER_DIRECTIVES, ROUTER_PROVIDERS} from '@angular/router-deprecated';
import { LoginComponent } from './loginComponent';
import {NewGatewayComponent} from './newGatewayComponent';

@Component({
    directives: [ROUTER_DIRECTIVES],
    providers: [ROUTER_PROVIDERS],
    selector: 'root-comp',
    template: `<router-outlet></router-outlet>`,
})
@RouteConfig([
    { path: '/newgateway',name: 'Newgateway',component: NewGatewayComponent},    
    { component: LoginComponent, name: 'Login', path: '/login', useAsDefault: true},
    { path: '/', redirectTo: ['/Login']}
])
export class RootComponent{ 

  constructor(private _router: Router) {

  }

}

LoginFormComponent LoginFormComponent

import { Component, Inject} from '@angular/core';
import { Router, ROUTER_PROVIDERS } from '@angular/router-deprecated';

@Component({
    selector: 'login-form',
    templateUrl: './loginForm.html',
    providers: [ROUTER_PROVIDERS]
})
export class LoginFormComponent { 
    constructor(private _router: Router) {
    }   

    // if login is sucessfull, navigate back to specified URL
    redirect(result: any, loginComp: LoginFormComponent) {
       this._router.navigate(['Newgateway']);
    }
}

NewGatewayComponent NewGatewayComponent

import {Component, provide} from '@angular/core';
@Component({
    selector: 'pi-new-gateway-panel',
    template: `
        <h1>Gateway</h1>
    `,
})
export class NewGatewayComponent {
   constructor() {
     console.log('loaded')
   } 
}

The problem here is that router.navigate() call below in loginComponent changes the browser URL to localhost:4001/newgateway however component is not loaded. 这里的问题是, router.navigate()下面调用loginComponent改变浏览器URL到localhost:4001/newgateway但组件没有加载。 Only after browser page is refreshed, newgatewayComponent constructor is invoked. 仅在刷新浏览器页面之后, newgatewayComponent调用newgatewayComponent构造函数。

this._router.navigate(['Newgateway']);

Appreciate any pointers. 感谢任何指针。

我认为您需要添加/但问题并没有提供足够的信息来确保

this._router.navigate(['/Newgateway']);

ok figured out the problem.. missed following dependencies in my package.json 好的解决了问题..错过了我的package.json中的以下依赖项

"@angular/compiler": "2.0.0-rc.1",
"@angular/platform-browser": "2.0.0-rc.1",

假设您在引导函数中包含了ROUTER_PROVIDERS,则应将其从LoginFormComponent.ts中的提供程序中删除。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM