角度2のボタンで別のページに移動します


112

ボタンをクリックして別のページに移動しようとしていますが、機能しません。何が問題なのでしょう。私は今角度2を学んでいます、そしてそれは今私にとって少し難しいです。

//Routes/Path in a folder call AdminBoard

export const AdminRoutes: Routes =[

  {
    path: 'dashboard',

    component: AdminComponent,
    children: [
      {path: '', redirectTo: 'Home'},
      {path: 'Home', component: HomeComponent},
      {path: 'Service', component: ServiceComponent},
      {path: 'Service/Sign_in', component:CustomerComponent}

    ]

  }

];

//Button is also in a different folder. Click button to navigate to this page           {path: 'Service/Sign_in', component:CustomerComponent}

  <button class="btn btn-success pull-right" ><a routerLink="/Service/Sign_in"> Add Customer</a></button>

1
次のようなものを試してください<button class="btn btn-success pull-right" ><a [routerLink]="[ '.', 'Service/Sign_in' ]"> Add Customer</a></button>
。– Avnesh Shakya 2017

回答:


254

このように使用して、うまくいくはずです:

 <a routerLink="/Service/Sign_in"><button class="btn btn-success pull-right" > Add Customer</button></a>

次のrouter.navigateByUrl('..')ように使用することもできます:

<button type="button" class="btn btn-primary-outline pull-right" (click)="btnClick();"><i class="fa fa-plus"></i> Add</button>    

import { Router } from '@angular/router';

btnClick= function () {
        this.router.navigateByUrl('/user');
};

更新

次のRouterようにコンストラクタに注入する必要があります:

constructor(private router: Router) { }

そうして初めて使用できるようになりますthis.routerRouterModuleモジュールにインポートすることも忘れないでください。

アップデート2

これで、Angular v4の後routerLinkで、ボタンに属性を直接追加できます(コメントセクションの@markで述べたように)。

 <button [routerLink]="'/url'"> Button Label</button>

2
一緒にデータを送信できますか?
Anuj 2018年

12
これが書かれてから物事が変わったかどうかはわかりませんが、2018年10月の時点で、[routerLink]属性を直接に配置できるようです<button>(これにより、ボタンをで<a>
囲む

では、どちらの方法が最もクリーンですか?マークアップでルートを公開せずに、typescriptファイルで維持する方が良いですか、それとも[routerLink]テンプレートでの「新しい」方法が進むべき道ですか?
RinとLen

IMOはあなた次第です。次のページに表示されるユーザーに移動すると、テンプレートでマークアップを非表示にするロジックはありません。残りはどちらも同じだと思います
Pardeep Jain

1
html fileコンポーネントがロードされる最初のレベルでは、<router-outlet></router-outlet>タグが必要です。詳細については、angular.io / api / router / RouterOutletdescriptionを参照してください。
Tharusha、

36

routerLinkは次の方法で使用できます。

<input type="button" value="Add Bulk Enquiry" [routerLink]="['../addBulkEnquiry']" class="btn">

または<button [routerLink]="['./url']">あなたのケースで使用してください、詳細については、github https://github.com/angular/angular/issues/9471でスタックトレース全体を読むことができます

他の方法も正しいですが、コンポーネントファイルへの依存関係を作成します。

あなたの懸念が解決されることを願っています。


1
@Ronitなぜだけではない:<button type = "button" value = "Add Bulk Enquiry" routerLink = "../ addBulkEnquiry" class = "btn">?なぜ角括弧を使用しているのですか?
アンディキング

1
@AndyKing彼は式(値として配列)を使用しているため、のfoo="boo" ようになり[foo]="'boo'"ます。たぶん、stackoverflow.com
questions / 43633452 /…

1
私はこの答えを好む
HungNM2

13
 <button type="button" class="btn btn-primary-outline pull-right" (click)="btnClick();"><i class="fa fa-plus"></i> Add</button>


import { Router } from '@angular/router';

btnClick= function () {
        this.router.navigate(['/user']);
};

私は最初に(router.navigateを使用して)このようなことを行い、次に他のアイデアを探し、他の回答で述べたようにrouterLinkを使用しました。どちらが良いのか、それとも重要なのか...
スコット

1

次のように、ルーターリンクを装飾し、角かっこでリンクすることが重要です。

<a [routerLink]="['/service']"> <button class="btn btn-info"> link to other page </button></a>

この場合の「/ service」は、ルーティングコンポーネントで指定されたパスのURLです。


0

ボタンにルーターリンクを設定すると、問題なく動作するようです。

<button class="nav-link" routerLink="/" (click)="hideMenu()">
     <i class="fa fa-home"></i> 
     <span>Home</span>
</button>

0

あなたは変えられる

    this.router.routeReuseStrategy.shouldReuseRoute = () => false;

以下のようなコンストラクタのコンポーネントレベルで

    constructor(private router: Router) {
            this.router.routeReuseStrategy.shouldReuseRoute = () => false; 
}

0

次の手順を実行します

メインコンポーネントにインポートを追加する

import {Router } from '@angular/router';

同じファイルに、コンストラクタとメソッドのコードを以下に追加します

constructor(private route: Router) {}
public Dashbord()
{
 this.route.navigate(['/dashboard']);
}

これはあなたの.htmlファイルコードです

<button mat-button (click)="Dashbord()">Dashboard</button><br>

ではapp-routing.module.ts、ファイルの追加ダッシュボード

const routes: Routes =
[
  { path: '', pathMatch: 'full' ,component: TestComponent},
  { path: 'dashboard', component: DashboardComponent } 
];

幸運を。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.