2016-04-28 3 views
2

У нас есть три компонента. AppComponent содержит два подкомпонента: LoginComponent и LandingPageComponent. @Rougeconfig определен в AppComponent. Но, к сожалению, я не могу пройти от входа в LandingPage.В угловом 2 Я не могу проложить маршрут между дочерними компонентами без перезагрузки

AppComponent

import {Component} from 'angular2/core'; 
import { RouteConfig, ROUTER_DIRECTIVES, ROUTER_PROVIDERS } from 'angular2/router'; 
import {LoginComponent} from '../app-components/login/login.component'; 
import {LandingPageComponent} from '../app-components/landing-page/landing-page.component'; 

@Component({ 
    selector: 'My-app', 
    templateUrl: './app/app-components/app.html', 
    directives: [ROUTER_DIRECTIVES], 
    providers: [ROUTER_PROVIDERS]  
}) 
@RouteConfig([ 
    { 
    path: '/login', 
    name: 'Login', 
    component: LoginComponent, 
    useAsDefault: true 
    }, 
    { 
    path: '/landing-page', 
    name: 'Landing-page', 
    component: LandingPageComponent, 
    } 
]) 
export class AppComponent { } 

LoginComponet

import {Component} from 'angular2/core'; 
import { RouteConfig, ROUTER_DIRECTIVES, ROUTER_PROVIDERS, Router} from 'angular2/router'; 
import {NgForm} from 'angular2/common'; 
import {LandingPageComponent} from '../landing-page/landing-page.component' 

@Component({ 
    selector: 'login', 
    template: '<a [routerLink]="['Landing-page']">Landing-page</a>', 
    styleUrls:['./app/app-components/login/login.css'], 
    directives: [ROUTER_DIRECTIVES], 
    providers: [ROUTER_PROVIDERS] 

}) 

export class LoginComponent { 

    //DECLARATIONS 
    login={username:"",password:""} ; 
    active = true; 
    submitted = false; 
    router: Router; 

    logineduser=logindec; 
    //constructor(private _router:Router) {} 

    constructor(_router: Router){ 
     this.router = _router; 

    } 
    onauth() { 
     this.submitted = true; 
     if(this.logineduser.username==this.login.username&&this.logineduser.password==this.login.password){ 
     this.router.navigateByUrl('/landing-page'); 
     location.reload(); 
     }  
    }  
} 

var logindec={ 
    username:"sampleuser", 
    password:"a" 
} ; 

LandingPageComponet

import {Component} from 'angular2/core'; 

@Component({ 
    selector: 'login', 
    template:'<h1>Landing Page</h1>' 
}) 
export class LandingPageComponent {} 

ответ

1

Remove

providers: [ROUTER_PROVIDERS] 

отовсюду, кроме ваших AppComponent

+0

Спасибо, Через некоторое время, если мы хотим, чтобы маршрут от Sub компонента (X) в своих собственных компонентов подразделам (X1, X2 ....). Как мы можем сделать это без добавления [ROUTER_PROVIDERS] в Sub component (X) – sainu

+0

Я не понимаю вопроса. «ROUTER_PROVIDERS» должен быть добавлен только к корневому компоненту, а затем доступен по всему миру. Только «ROUTER_DIRECTIVES» необходимо добавлять к каждому компоненту, где используется «» или '[routerLink]. –

+0

Как мы можем маршрутизировать внутри дочернего компонента , мы можем написать конфигурацию маршрута внутри дочернего компонента для своего подкомпонента. – sainu

Смежные вопросы