если я вставляю маршрутизатор из @ углового/маршрутизатора в компонент, а затем использую его, я получаю сообщение об ошибке, которое не может вызвать navigateByUrl неопределенного.Встраиваемый в Angular2 Router не установлен
Это компонент, я использую экземпляр маршрутизатора:
import { Component, OnInit } from '@angular/core';
import { UserAccountService } from '../service/user-account.service'
import { Response } from '@angular/http';
import * as jQuery from 'jquery';
import { Router } from '@angular/router';
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit {
constructor(private userAccountService: UserAccountService,
private appRouter: Router) { }
public loginClicked(): void {
this.userAccountService.Login(this.Email, this.Password).subscribe(this.loginCallback);
}
private loginCallback(data: any) {
if(data.success) {
localStorage.setItem('access_token', data.token);
this.appRouter.navigateByUrl('/dashboard'); //-> error
} else {
[...]
}
}
}
Маршруты определяются внутри модуля приложения:
const appRoutes: Routes = [
{ path: 'login', component: LoginComponent },
{ path: 'dashboard', component: DashboardComponent }
];
@NgModule({
declarations: [
AppComponent,
LoginComponent,
DashboardComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
RouterModule.forRoot(appRoutes)
],
providers: [UserAccountService],
bootstrap: [AppComponent]
})
А внутри index.html я определяю мой
Я что-то забыл? Я не имею понятия о том, как заставить его работать правильно ...
Где вы звоните 'loginCallback'? Я предполагаю, что контекст очень важен здесь – yurzui
ОК, добавляя контекст, который я заметил, я называю loginCallback и это внутри userAccountsService. – gabs