Я читал this article где автор утверждает следующее:Почему компоненты Конструктор вызывается несколько раз, пока он должен быть повторно маршрутизатором
Чтобы избежать ненужных изменений DOM, маршрутизатор будет использовать повторно компоненты при изменяются параметры соответствующих маршрутов.
И он продолжает пример, где MessageCmp
используется повторно. Как я понимаю, это не разрушен и воссоздан, следовательно, наблюдаемые используются для отслеживания chanages:
class MessageCmp {
message: Observable<Message>;
constructor(r: ActivatedRoute) {
this.message = r.data.map(d => d.message);
}
}
У меня есть следующие настройки маршрута:
path: 'tasks',
component: ExTasksComponent,
children: [
{
path: '',
component: ExTaskListComponent,
},
{
path: ':id',
component: ExTaskViewComponent,
Так что я ожидал, что ExTaskViewComponent
будет повторно используется при навигации от /tasks/3
до /tasks/4
. Однако конструктор компонента выполняется каждый раз, когда происходит навигация? Я что-то упускаю?
Я плаваю, используя routerLink
директивы.
Я предполагаю, что он выгружает его, потому что маршрут «задач» имеет собственный компонент ref. Поэтому, когда он идет по дереву маршрутов, он выгружает ExTaskViewComponent, потому что он сначала встречает ExTaskComponent на корневом пути задач (;-)). Попробуйте удалить этот компонент по пути «задачи» – MikeOne
@MikeOne, спасибо, я выяснил проблему. См. [Мой ответ] (http://stackoverflow.com/a/42418990/2545680) –