2017-02-20 2 views
-1

Я пытаюсь передать свой компонент для перенаправления на страницу в функции ngOnInit(), но он не работает. Мой код выглядит примерно так:Угловой 2: перенаправление через component.ts

constructor(private router: Router) {} 

ngOnInit() { 
    this.initForm(); 
} 

initForm(){ 
    this.router.navigateByUrl('ng/loan/loan'); 
} 

Код выше не сделает компонент перенаправляет меня к желаемому пути, но если я добавить кнопку в мой файл шаблона и дать ему (click)="initForm()" это делает. Что мне здесь не хватает?

+1

насчет 'this.router.navigateByUrl ('/ нг/кредита/займа');'? (с ведущей косой чертой). Вам нужно будет предоставить дополнительную информацию, иначе маловероятно, что кто-то сможет предоставить поддержку (например, как выглядят маршруты, какой компонент содержит код выше ...) –

+0

Вы не получаете сообщений об ошибках? Может быть, что-то вроде этого. This.router.navigate (['ng', 'loan', 'loan']); ' – Kyrsberg

+0

Я не получаю никаких сообщений об ошибках. Everyting в порядке, это просто не вызовет навигацию. @Kyrsberg, я пробовал this.router.navigate (['ng', 'loan', 'loan']), также он не будет запускаться, но он также не сообщает об ошибке. Это срабатывает только в том случае, если я вызываю функцию с помощью кнопки с событием (щелчком). –

ответ

0

Итак, после некоторых исследований я узнал, как добиться желаемого эффекта. Причина, вызывающая this.initForm() из функции ngOnInit(), не вызвала маршрутизацию, потому что this.router.navigateByUrl является обещанием. Я должен был добавить .then() к обещанию и снова сказать ему, чтобы перейти к маршруту, который мне нужен.

новая функция initForm():

initForm(){ 
    this.router.navigateByUrl('ng/loan/loan').then(x => { 
    this.router.navigateByUrl('ng/loan/loan'); 
    }) 
} 
Смежные вопросы