현재 앵귤러 2에서 사용할 수있는 새로운 라우터 3.0 알파를 가지고 놀기 위해 사용하고있는 작은 플 런크가 있습니다. 일반적으로 잘 작동하지만 문제는 특정 ID로 '세부 정보'구성 요소로 연결되는 링크를 클릭하면 다른 ID로 다른 링크를 클릭해도 변경되지 않는다는 것입니다. 구성 요소는 절대 다시 인스턴스화되지 않으므로 처음로드 될 때 전달 된 내용 만 표시됩니다.Angular2 구성 요소가 라우팅 매개 변수 업데이트 (라우터 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 문제를 시연 :
여기에 문제의 구성 요소입니다. 한 저자 이름을 클릭하고 다른 저자 이름을 클릭하면 변경되지 않습니다. 당신의 ContactsDetailComponent
에서
확실히 저에게는 효과적이지만 이상하게 보입니다. 그래도 다른 방법이 없다면 이걸로 갈거야. 시간을내어 답변 해 주셔서 대단히 감사합니다. –
이상하지는 않지만 구성 요소를 다시 사용합니다. – TDaver
@TDaver 다음 단어 선택을 변경하겠습니다. 그것은 전혀 분명하지 않습니다. ngOnReload 인터페이스와 같은 것을 찾았지만 아무 것도 발견하지 못했습니다. 그것은해야 할 일을하는 더 Angular2'ish 방법처럼 보일 것입니다. –