Açısal 2 düğmesiyle başka bir sayfaya gidin


112

Bir düğmeyi tıklayarak başka bir sayfaya gitmeye çalışıyorum ama çalışmıyor. Sorun ne olabilir? Şimdi açısal 2 öğreniyorum ve bu benim için biraz zor.

//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
bunun gibi bir şey deneyin:<button class="btn btn-success pull-right" ><a [routerLink]="[ '.', 'Service/Sign_in' ]"> Add Customer</a></button>
Avnesh Shakya

Yanıtlar:


253

Bunu böyle kullanın, çalışmalı:

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

Ayrıca şu şekilde kullanabilirsiniz 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');
};

Güncelleme

Yapıcıya şu şekilde enjekte etmelisiniz Router:

constructor(private router: Router) { }

ancak o zaman kullanabilirsiniz this.router. RouterModuleModülünüze de aktarmayı unutmayın .

Güncelleme 2

Şimdi, Angular routerLinkv4'ten sonra, düğmeye doğrudan özellik ekleyebilirsiniz (yorum bölümünde @mark tarafından belirtildiği gibi) aşağıdaki gibi -

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

2
onunla biraz veri gönderebilir miyim?
Anuj

12
Bunun yazılmasından bu yana bir şeylerin değişip değişmediğinden emin değilim, ancak Ekim 2018'den itibaren, [routerLink]özelliği doğrudan üzerine koyabilirsiniz <button>(bu, düğmeyi <a>
sararken

Öyleyse en temiz yol hangisidir? Rotayı işaretlemede göstermemek, bunun yerine yazı dosyasında tutmak daha mı iyi, yoksa [routerLink]şablondaki 'yeni' yol, gidilecek yol mu?
Rin ve Len

bu size kalmış, IMO, bir sonraki sayfada görebileceğiniz kullanıcının görebileceği şekilde gideceğiniz için işaretlemenizi şablonda gizlemenin bir mantığı yoktur. Sanırım ikisi de geri kalanı aynı
Pardeep Jain

1
html fileBileşenin yükleneceği ilk seviyede <router-outlet></router-outlet>etiketi olmalıdır. Daha fazla ayrıntı için lütfen angular.io/api/router/RouterOutlet#description bakın .
Tharusha

36

RouterLink'i aşağıdaki şekilde kullanabilirsiniz,

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

veya <button [routerLink]="['./url']">kendi durumunuzda kullanın , daha fazla bilgi için tüm yığını github'da okuyabilirsiniz https://github.com/angular/angular/issues/9471

diğer yöntemler de doğrudur ancak bileşen dosyasına bir bağımlılık yaratırlar.

Umarım endişeniz çözülür.


1
@Ronit Neden sadece: <button type = "button" value = "Toplu Sorgu Ekle" routerLink = "../ addBulkEnquiry" class = "btn">? Neden köşeli parantez kullanıyorsunuz?
Andy King

1
@AndyKing Bir ifade kullandığı için (değer olarak bir dizi) foo="boo" gibidir [foo]="'boo'". Belki stackoverflow.com/questions/43633452/…
PhoneixS

1
Bu cevabı tercih ederim
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']);
};

İlk başta buna benzer bir şey yaptım (router.navigate kullanarak), sonra başka fikirler aradım ve şimdi diğer cevaplarda belirtildiği gibi routerLink'i kullandım. Hangisinin daha iyi olduğunu ya da önemli olup olmadığını merak ediyorum ...
Scott

1

Yönlendirici bağlantısını süslemeniz ve aşağıdaki gibi köşeli parantezlerle bağlamanız önemlidir:

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

Burada " / service ", yönlendirme bileşeninde belirtilen yol url'sidir.


0

Düğmede yönlendirici bağlantısının olması benim için iyi çalışıyor gibi görünüyor:

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

0

değiştirebilirsin

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

yapıcıda bileşen düzeyinde feryat gibi

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

0

Bu adımları takip et

Ana bileşeninize içe aktarma ekleyin

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

Aynı dosyada yapıcı ve yöntem için aşağıdaki kodu ekleyin

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

Bu senin .htmldosya kodun

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

Gelen app-routing.module.tsdosya ekleme pano

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

İyi şanslar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.