2016-09-29 4 views
0

Im пытается использовать navigate.route, но продолжает работать в эту ошибку: TypeError: не определено не является объектом (оценка «this.router.navigate»)угловой 2 router.navigate неопределенными

Я не могу показаться, что получить эту работу, поэтому мне было интересно, может ли кто-нибудь указать, что я делаю неправильно. Вот мой компонент, и да мой маршрут определяется как таковой {path: 'profile', component: Profile}. Его работая отлично с RouterLink как раз не в router.navigate. Благодаря!

import {Component, ViewEncapsulation} from '@angular/core'; 
import {DataService} from '../shared/services/DataService'; 
import {Widget} from '../core/widget/widget'; 
import {TablesBackgrid} from './tables-backgrid/tables-backgrid'; 
import {DataTableDirectives} from 'angular2-datatable/datatable'; 
import {SearchPipe} from './pipes/search-pipe'; 
declare var jQuery: any; 
import {Router,ActivatedRoute} from '@angular/router'; 
import {IAccounts} from '../shared/interfaces/IAccounts'; 
import {Profile} from '../profile/profile'; 
import { ROUTER_DIRECTIVES } from '@angular/router'; 

const Agents = []; 

@Component({ 
    selector: '[account-list]', 
    template: require('./account-list.html'), 
    encapsulation: ViewEncapsulation.None, 
    directives: [Widget,TablesBackgrid, DataTableDirectives,ROUTER_DIRECTIVES], 
    styles: [require('./account-list.scss')], 
    pipes: [SearchPipe] 
}) 

export class AccountList { 
    agents: any[]; 
    router:Router; 

    constructor(ds:DataService) { 
    let test = ds.getAccounts().then(res => { 
     this.agents = res.agents; 
    }); 
    } 

    loadProfile(id){ 
    this.router.navigate(['/profile']); 
    } 

    ngOnInit(): void { 
    let searchInput = jQuery('#table-search-input, #search-countries'); 
    searchInput 
     .focus((e) => { 
     jQuery(e.target).closest('.input-group').addClass('focus'); 
    }) 
     .focusout((e) => { 
     jQuery(e.target).closest('.input-group').removeClass('focus'); 
    }); 
    } 

} 

ответ

1

Вы должны вводить Router зависимость в конструкторе. Дополнительная вещь, которую я хотел бы предложить, ds.getAccounts() звонок службы должен быть переведен в ngOnInit крюк жизненного цикла компонента.

constructor(private ds:DataService, router: Router) { 
    this.router = router; 
} 

ngOnInit(): void { 
    let test = this.ds.getAccounts().then(res => { 
     this.agents = res.agents; 
    }); 
    //....other code here as is...... 
} 
Смежные вопросы