Перейдіть на іншу сторінку за допомогою кнопки у кутку 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>
Авнеш Шакья

Відповіді:


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
чи можу я надіслати з нею деякі дані?
Ануй

12
Не впевнений, чи змінилися речі з моменту написання цього запису, але станом на жовтень 2018 року, здається, ви можете просто поставити [routerLink]атрибут безпосередньо на <button>(що дозволяє уникнути деяких проблем зі стилізацією, які можуть з’являтися під час загортання кнопки в <a>)
Марк Адельсбергер

То який спосіб найчистіший? Чи краще не виставляти маршрут у розмітці, а зберігати його замість цього у файлі машинопису, або це "новий" шлях із [routerLink]шаблоном?
Рін та Лен

це залежить від вас, IMO, немає логіки приховувати свою розмітку в шаблоні, оскільки ви збираєтесь перейти до користувача, який може побачити на наступній сторінці. Відпочинок і те саме я здогадуюсь
Pardeep Jain

1
На першому рівні, html fileде компонент буде завантажений, повинен бути <router-outlet></router-outlet>тег. Будь ласка, зверніться до angular.io/api/router/RouterOutlet#description для отримання більш детальної інформації.
Таруша

36

Ви можете використовувати routerLink наступним чином,

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

або скористайтеся <button [routerLink]="['./url']">у вашому випадку, для отримання додаткової інформації ви можете прочитати всю стек-трек на github https://github.com/angular/angular/isissue/9471

інші методи також є правильними, але вони створюють залежність від компонентного файлу.

Сподіваюся, ваша турбота буде вирішена.


1
@Ronit Чому б не просто: <button type = "button" value = "Додати масовий запит" routerLink = "../ addBulkEnquiry" class = "btn">? Для чого ви використовуєте квадратні дужки?
Енді Кінг

1
@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, як згадувалося в інших відповідях. Цікаво, що краще, чи якщо це важливо ...
Скотт

1

Важливо, щоб ви прикрасили посилання на маршрутизатор і з'єднали квадратними дужками наступним чином:

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

Де " / послуга " в цьому випадку - 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 } 
];

Удачі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.