2016-05-16 3 views
8

Как создать простую переадресацию при нажатии на какую-либо кнопку в Угловом 2? Уже пробовал:Угловая 2 переадресация по клику

import {Component, OnInit} from 'angular2/core'; 
import {Router, ROUTER_PROVIDERS} from 'angular2/router' 

@Component({ 
    selector: 'loginForm', 
    templateUrl: 'login.html', 
    providers: [ROUTER_PROVIDERS] 
}) 

export class LoginComponent implements OnInit { 

    constructor(private router: Router) { } 

    ngOnInit() { 
     this.router.navigate(['./SomewhereElse']); 
    } 

} 

ответ

20

Вы можете использовать поддержку событийную Angular2:

@Component({ 
    selector: 'loginForm', 
    template: ` 
    <div (click)="redirect()">Redirect</div> 
    `, 
    providers: [ROUTER_PROVIDERS] 
}) 
export class LoginComponent implements OnInit { 
    constructor(private router: Router) { } 

    redirect() { 
    this.router.navigate(['./SomewhereElse']); 
    } 
} 
+0

не работает. У меня есть ИСКЛЮЧЕНИЕ: Ошибка: Неподготовлено (в обещании): Не удается найти выход по умолчанию – TeodorKolev

+1

Не могли бы вы предоставить содержание шаблона, в котором вы определяете маршруты (содержащие 'SomewhereElse')? У вас должен быть «роутер-выход» ... –

+0

Да, у меня есть внутри. Он находится внутри app.component.ts. @Component ({ селектор: 'моя-приложение', шаблон: '

<маршрутизатор-розетка> ', директивы: [ROUTER_DIRECTIVES] }) – TeodorKolev

9

Я бы сказал, что использование routerLink директива & помещается что над a (якорь) тег

<a [routerLink]="['./SomewhereElse']">Redirect</a> 

Также вам необходимо удалить ROUTER_PROVIDERS от providers & inclu его в зависимости от загрузки, а затем добавьте ROUTER_DIRECTIVES в директиве вариант компонента для использования директивы routerLink по HTML. Удостоверьтесь, что RouterModule с его маршрутом был введен в модуль основного приложения.

+0

Можете ли вы показать рабочий код? – TeodorKolev

+0

@TeodorKolev посмотрите на [this plunkr] (http://plnkr.co/edit/PMkIbCWJAAlxLBYgDcTG?p=preview) Я взял его из angular.io, у которого есть много ссылок, созданных с помощью 'routerLink' –

+0

Является ли это решение для кого угодно ? –

10

Я хотел бы сделать его более динамичным с помощью метода параметров

Импорта углового маршрутизатора

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

Создания кнопки с событием нажатия

<div (click)="redirect(my-page)">My page</div> 

Создайте метод с параметром Pagename

redirect(pagename: string) { 
    this.router.navigate(['/'+pagename]); 
} 

При нажатии маршрутизатор должен маршрут к нужной странице

1

Try routerLink на кнопку теге

<button type="button" [routerLink]="['/edit']">Edit</button> 

More Info

+0

лучший ответ !!! –