각도 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

답변:


253

다음과 같이 사용하면 작동합니다.

 <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.router. RouterModule모듈에서 가져 오는 것도 잊지 마십시오.

업데이트 2

이제 Angular v4 이후 routerLink에는 아래와 같이 버튼 에 속성을 직접 추가 할 수 있습니다 (댓글 섹션의 @mark에서 언급했듯이).

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

2
데이터를 보낼 수 있습니까?
Anuj

12
이 글이 작성된 이후로 변경되었는지 확실하지 않지만 2018 년 10 월부터 [routerLink]속성을에 직접 넣을 수있는 것 같습니다 <button>(버튼을 래핑 할 때 발생할 수있는 일부 스타일 문제를 방지 <a>)
Mark Adelsberger

그렇다면 어느 쪽이 가장 깨끗합니까? 마크 업에 경로를 노출하지 않고 대신 typescript 파일에 유지하는 것이 더 낫 [routerLink]습니까? 아니면 템플릿에서 '새로운'방법 이가는 방법입니까?
Rin and Len

그것은 당신에게 달려 있습니다, IMO, 다음 페이지에서 볼 수 있듯이 사용자를 탐색 할 때 템플릿에서 마크 업을 숨기는 논리는 없습니다. 나머지는 모두 같은 것 같아요
Pardeep Jain 19

1
html file컴포넌트가로드 될 첫 번째 레벨 에는 <router-outlet></router-outlet>태그 가 있어야 합니다. 자세한 내용은 angular.io/api/router/RouterOutlet#description 을 참조하십시오.
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 = "대량 문의 추가"routerLink = "../ addBulkEnquiry"class = "btn">? 대괄호를 사용하는 이유는 무엇입니까?
앤디 킹

1
그 식 (a 값 어레이)를 사용하고 있기 때문에 @AndyKing, foo="boo" 같다 [foo]="'boo'". 아마도 당신은 stackoverflow.com/questions/43633452/
PhoneixS

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를 사용합니다. 어느 것이 더 낫거나
Scott

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.