2017-07-25 81 views
2

我有一个登录页面,有一个窗体和一个按钮来做登录。当用户点击按钮时,我想评估密码和电子邮件,如果一切正确,用户必须重定向到另一个页面。重定向到另一页Angular 2

我的问题是我在里面的登录html这(<router-outlet></router-outlet>)新页面的所有信息都显示在登录页面的相同位置,我不想混合这两个信息。我想要登录单独的新信息。

我尝试使用window.location.href,但不工作的信息继续显示在登录的相同的地方。

这是我的路由配置。

export const routes: Routes = [ 
    { path: 'show_alunos', component: ListAlunosComponent } 
]; 

组件ListAlunosComponent是我想在验证用户凭据后显示的新页面。

app.component.html

<form class="form-signin"> 
    <h2 class="form-signin-heading">Please sign in</h2> 
    <label for="inputEmail" class="sr-only">Email address</label> 
    <input [(ngModel)]="email" name="email" type="email" id="inputEmail" class="form-control" placeholder="Email address" required autofocus> 
    <label for="inputPassword" class="sr-only">Password</label> 
    <input [(ngModel)]="password" name="password" type="password" id="inputPassword" class="form-control" placeholder="Password" required> 
    <div class="checkbox"> 
     <label> 
     <input type="checkbox" value="remember-me"> Remember me 
     </label> 
    </div> 
    <button class="btn btn-lg btn-primary btn-block" (click)="submit()" type="submit">Sign in</button> 
    </form> 
    <router-outlet></router-outlet> 

app.component.ts

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

@Component({ 
    selector: 'app-root', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'] 
}) 
export class AppComponent { 
    title = 'app'; 
    public email: string; 
    public password: string; 

    constructor(private router: Router) { 
     this.email = ""; 
     this.password = ""; 
    } 

    public submit(): void { 
     this.router.navigateByUrl(['show_alunos']); 
    } 
} 

app.router.ts

import { ModuleWithProviders } from '@angular/core'; 
import { Routes, RouterModule } from '@angular/router'; 

import { AppComponent } from './app.component'; 
import { ListAlunosComponent } from '../pages/list-alunos/list- 
alunos.component'; 

// Route Configuration. 
export const routes: Routes = [ 
    { path: 'show_alunos', component: ListAlunosComponent } 
]; 

export const routing: ModuleWithProviders = RouterModule.forRoot(routes); 
+0

您确切的问题是什么? – k11k2

+0

可能重复[Angular 2 - 成功登录后不工作重定向](https://stackoverflow.com/questions/35479144/angular-2-redirect-after-successful-login-not-working) –

回答

4

后您检查电子邮件和passwork尝试:

router.navigate(['/show_alunos']) 

而在构造申报

constructor (private router: Router) 

而从 “@角/路由器” 进口{路由器};

更新:

简单实例如何将用户Ruter:

your.component.html:

<form [formGroup]="myForm" (ngSubmit)="onSubmit()"> 
    <input type="text" formControlName="Email"> 
    <input type="password" formContolName="Password"> 
    <input type="submit" value="login"> 
</form> 

your.component.ts:

import { Component, OnInit } from '@angular/core'; 
import { FormControl, FormGroup } from "@angular/forms"; 
import { Router } from "@angular/router"; 

@Component({ 
    selector: 'component-tag-name', 
    templateUrl: './your.component.html' 
}) 

export class YourComponentName implements OnInit { 

myForm: FormGroup; 

constructor(private router: Router) {} 

ngOnInit(){ 
this.myForm = this.FormGroup({ 
    'Email': new FormConrol(null, [Validators.required]), 
    'Password': new FormControl(null, [Validators.required]) 
    }) 
} 

onSubmit(){ 
    let email = this.myForm.get('Email').value; 
    let password = this.myForm.get('Password').value; 

    if (email === 'your value' && password === 'your value'){ 
    this.router.navigate(['/show_alunos']); 
    } 
} 

在YOUT应用.module.ts你也需要导入这个组件和ListAlunosComponent。然后,您需要导入这些组件并写入您的路由配置.ts文件中:

{ path: 'show_alunos', component: ListAlunosComponent } 
+0

我很努力了解在Angular路由的易于理解的在线文档中容易找到的反馈信息。 – 2017-07-25 10:56:25

+1

简单:懒读ops谁不读文档/知道如何google + x用户谁想要快速代表。 –

+0

已更新的答案。 – FierceDev