2017-04-02 9 views
0

dashboard.component.tsは私がangular2に新しいです、と私は、ログインページを設計していますルートボタンのコンポーネント内で新しいページを開く方法angular2をクリックしますか?

import { NgModule }    from '@angular/core'; 
import { BrowserModule }  from '@angular/platform-browser'; 
import { FormsModule }   from '@angular/forms'; 
import {Router} from '@angular/router'; 
import { HttpModule, JsonpModule } from '@angular/http'; 
import { RouterModule, Routes } from '@angular/router'; 
import { AppComponent }   from './app.component'; 
import { LoginFormComponent } from './login-form.component'; 
import { DashboardComponent } from './dashboard.component'; 
const appRoutes: Routes = [ 
    { path: 'dashboard', component: DashboardComponent }, 
]; 
@NgModule({ 
    imports: [ 
    BrowserModule, 
    FormsModule, 
    HttpModule, 
    JsonpModule, 
    RouterModule.forRoot(appRoutes) 
    ], 
    declarations: [ 
    AppComponent, 
    LoginFormComponent, 
    DashboardComponent 
    ], 
    bootstrap: [ AppComponent ] 
}) 
export class AppModule { } 

を定義している

import { Injectable } from '@angular/core'; 
import {Router} from '@angular/router'; 
import {Http, Headers, Response,RequestOptions} from '@angular/http'; 
import { Component } from '@angular/core'; 
import 'rxjs/add/operator/map'; 
import 'rxjs/add/operator/catch'; 
import {Observable} from 'rxjs/Rx'; 

import { Login } from './login'; 

@Component({ 
    moduleId: module.id, 
    selector: 'dashboard', 
    templateUrl: './dashboard.html', 
    template : '<router-outlet></router-outlet>' 
}) 

export class DashboardComponent { 

} 

module.tsファイル。ここで、[送信]ボタンをクリックした後、ユーザーが適切に認証されると、新しいページを開きます。どうすればいいですか?以下はlogin.component.tsファイルです。おかげ 更新されたコード

import { Injectable } from '@angular/core'; 
    import {Router} from '@angular/router'; 
    import {Http, Headers, Response,RequestOptions} from '@angular/http'; 
    import { Component } from '@angular/core'; 
    import 'rxjs/add/operator/map'; 
    import 'rxjs/add/operator/catch'; 
    import {Observable} from 'rxjs/Rx'; 
    import { Login } from './login'; 
    @Component({ 
     moduleId: module.id, 
     selector: 'login-form', 
     templateUrl: './login-form.component.html', 
    }) 

    export class LoginFormComponent { 
     constructor (private http: Http,private _router:Router) {} 
     data = { 
      'email': '', 
       'password': '' 
     }; 
     formSubmit (body: Object): Observable<Login[]>{ 
      let bodyString = JSON.stringify(body); 
      let headers  = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' }); // ... Set content type to JSON 
      let options  = new RequestOptions({ headers: headers }); 
      var params = "username=" + this.data.email + "&password=" + this.data.password; 
      var resp = this.http.post("http://localhost:8000/login", params, options) // ...using post request 
          .subscribe((res:Response) => { 
           if(res.json().status_code == 200) 
           { 
                  this._router.navigate(["../dashboard"]); 
            console.log("success"); 
           } 
           }); 
          return;           
    } 
    } 
+0

削除ルータ・コンセントとlogin.component.html内でそれを追加して再試行してください、そして、あなたはそれが動作します:モジュール内Router

をしかしまだそれは適切な方法ではない –

+0

ねえ、私はダッシュボードから削除しました。これで、ログインページを更新すると、ログインページのみをクリックせずにdashboard.htmlファイルが読み込まれることがわかりました。私はdashboard.htmlをクリックした後に読み込み、そのページを更新する際にdashboard.htmlファイルをロードします。 –

+0

はい、ロードされました。これはルータの動作方法です。app.component.htmlに追加する必要があります。今あなたはルータについて学ぶ必要があります。 –

答えて

2

使用

constructor (private http: Http,private _router:Router) {} 

if(res.json().status_code == 200) 
{ 
this._router.navigate(["../Dashboard"]); 
} 

これはルートに定義され、ダッシュボードにユーザーをリダイレクトします。

あなたはもっと知りたい場合は、次のダッシュボードから

const appRoutes: Routes = [ 
    { path: 'dashbaord', component: DashboardComponent } 
]; 

@NgModule({ 
    imports: [ 
    BrowserModule, 
    FormsModule, 
    RouterModule.forRoot(appRoutes) 
    ], 
    ....... 
}) 
+0

こんにちはVivek、あなたの答えに感謝します。しかし、この行の意味を教えてください。 "これは、ルートで定義されたダッシュボードにユーザーをリダイレクトします。"私はあなたの提案として上記のコードを追加しましたが、ルートでそれをどのように定義するのですか? –

+0

あなたはtpを読む必要があります:https://angular.io/docs/ts/latest/guide/router.html#!#route-config –

+0

はい、これを読んでいます。そして、私はmodule.tsファイルのルートにも追加しました。まだそれは私にエラーを与えています。 "ルータ用のプロバイダはありません" –

関連する問題