2016-10-21 4 views
7

В Angular2 RC1 и снизить вызывая ссылку маршрута всегда вызывает компонент для перезагрузки:Force Angular2 перезагрузить компонент на навигационном

<a [routerLink]="['/page', {id: 1}]">A link </a> 

Использования Angular2, ни один RC, компонент не перезагружается, если его Навигационные себе с различными параметрами. Есть ли способ вернуть поведение перезагрузки?

Я понимаю другой способ справиться с этим, подписываясь на ActivatedRoute и обнаруживая изменения переменных, но это приводит к тому, что компонентная логика возрастает по сложности.

+1

Это не поддерживается в новом маршрутизаторе, но я видел обсуждения о планах поддержать это в конце концов. –

+1

Как вы это сделали? – user2180794

+0

Не могли бы вы объяснить, как достичь этой функциональности? Я столкнулся с одной и той же проблемой, у меня есть один компонент, связанный с несколькими маршрутами, который загружается с различными данными сервера на основе текущего маршрута. – Hazerd

ответ

1

Простой способ сделать это - заставить перезагрузить шаблон с помощью * ngIf. Вам понадобится переменная, которая «выключает и выключает компонент». Если значения переменных были изменены до этого режима off/on, они будут отображаться при повторном просмотре.

2

Несмотря на то, что вы упомянули «ActivatedRoute» и как он будет сложным кодом, я думаю, что это поможет другим людям, столкнувшимся с этой проблемой, когда они достигнут вашего вопроса, как и я :).

This topic ответит на ваш вопрос.

Этот код, указанный ниже (вставка из вышеприведенной темы), является тем, где происходит «волшебство». Если вы поместите код «перезагрузки» в эту функцию подписчика, ваш компонент перезагрузится.

ngOnInit() { 
    this.sub = this.route.params.subscribe(params => { 
     this.id = +params['id']; // (+) converts string 'id' to a number 
     // Some 'reload' coding 
     // In a real app: dispatch action to load the details here. 
    }); 
} 
Смежные вопросы