У меня есть небольшой Plunk, который я использую для игры с новой альфа-маршрутизатором 3.0, доступной в настоящее время в Angular 2. Это хорошо работает в целом, но проблема заключается в том, что после того, как я нажму ссылку, которая направляется к компоненту «detail» с определенным идентификатором, он никогда не изменяется, когда я нажимаю на другую ссылку с другим идентификатором. Компонент никогда не восстанавливается, поэтому он только когда-либо показывает, что он был передан в первый раз, когда он загружен.Компонент Angular2 не обнаруживает обновления параметров маршрутизации (Router 3.0)
Вот компонент вопрос:
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { ContactsService } from './contacts.service';
@Component({
selector: 'contacts-detail',
template: `
<h2>{{contact.name}}</h2>
`
})
export class ContactsDetailComponent implements OnInit {
constructor(private contactsService: ContactsService, private route: ActivatedRoute) {
}
ngOnInit() {
this.contact = this.contactsService.getContact(this.route.snapshot.params.id);
console.log('Fetching user', this.route.snapshot.params.id);
}
}
Here is the Plunk демонстрирует проблему. Нажмите одно имя автора, а затем другое, чтобы увидеть, что оно не изменяется.
Это, безусловно, работает для меня, но кажется странным. Я пойду с этим, если ничего другого не пойдет по моему пути. Большое спасибо за то, что нашли время ответить. –
Это не странно, это повторное использование компонентов. – TDaver
@TDaver Позвольте мне изменить свой выбор слов; это совсем не очевидно. Я искал что-то вроде интерфейса ngOnReload для работы, но ничего не нашел. Казалось бы, это еще более угловатый способ сделать то, что нужно сделать. –