Используя routerLink и (нажмите) в той же кнопке - PullRequest
0 голосов
/ 11 мая 2018

Это вопрос о лучшей практике.Это хорошая практика, чтобы использовать routerLink и (нажмите) в той же кнопке.

<button routerLink="/link" (click)="back()">

Поскольку мы можем поместить логику навигации маршрутизатора в метод back (), как показано ниже,

this.router.navigate(['/link']);

Все, что я нашел по этому поводу, это статья который не говорил о лучшей практике для подражания.Если одно лучше другого, можете ли вы объяснить причину.

Ответы [ 3 ]

0 голосов
/ 11 мая 2018

Я бы выбрал routerLink, когда мне просто нужно перейти, например, к /link

Но если есть какая-то логика, которую необходимо выполнить перед навигацией, я бы выбрал click()

Также бывают случаи, когда вам нужно передать параметры запроса при маршрутизации навигации, тогда также я бы предпочел использовать click()

0 голосов
/ 11 мая 2018

Ниже приведено несколько примеров того, как вы можете поиграть с routerLink и click,

Надеюсь, это поможет:

-> Если вы хотите перенаправить на определенные страницы, вы всегда можете использовать это:

<a [routerLink]="['/my-book-listing']"> My Books</a>

-> Если вы хотите перенаправить на страницу, но хотите отправить какой-либо параметр, такой как ID, используйте:

<a [routerLink]="['/my-book-details','3']">Book number 3</a>

-> Если есть случай, когда вам нужно отправить параметры запроса на маршрут, вы можете использовать

<a [routerLink]="['/search-this']" [queryParams]="{text:'sam',category:'social'}">Go Search</a>

-> Если перед переходом на страницу требуется кодовая логика, вам нужно использовать

<button (click)="createBook()">Create Book</button>

createBook(bookData){
   // Create Book logic
   this.router.navigate(['/my-book-listing']);
}

-> Вы также можете использовать следующее, но это не очень хорошая практика, если только вы не вызываете функцию для уничтожения переменных или сохранения страницы, покидающей данные

<button (click)="showLoader()" [routerLink]="['/my-book-listing']">Create Book</button>

showLoader(){
  // showLoader logic
}
0 голосов
/ 11 мая 2018

Я не уверен в лучшей практике, но я бы сказал, что можно использовать routerLink и (щелкать) в одной и той же кнопке, если вы не мешаете навигации.

Навигация вручную с помощьюthis.router.navigate(['/link']); является неоптимальным, поскольку routerLink обрабатывает такие вещи, как «открыть в новой вкладке», тогда как реализация собственного с использованием обработчика (щелчка) нежелательна.

...