В моем приложении Angular я использую NgRx и Nx's Router Navigation:
@Effect() navigation$ = this.dataPersistence.navigation(A_Component, {
run: (a: ActivatedRouteSnapshot) => {
const id = a.params.id;
if (id) {
return new SampleAction(State.VIEW, id);
} else {
return new SampleAction(State.NEW);
}
},
onError: (a: ActivatedRouteSnapshot, e: any) => {
console.error(e);
return null;
},
});
Мои маршруты определены следующим образом:
// ...
RouterModule.forChild([{
path: 'configurator',
component: FooComponent,
canActivate: [AuthGuard],
children: [{
path: '',
component: A_Component
}, {
path: 'b',
component: B_Component,
}, {
path: 'c',
component: C_Component,
}, ],
},
{
path: '',
pathMatch: 'full',
redirectTo: 'configurator'
},
]),
// ...
FooComponent
имеет <router-outlet></router-outlet>
, чтобы показатьодин из 3 компонентов A_Component
, B_Component
или C_Component
.Поэтому, когда пользователь переходит к configurator/
, FooComponent
показывает A_Component
и срабатывает SampleAction
.Это нормально.
Но: Когда пользователь переходит с configurator/b
или configurator/c
обратно на configurator
, SampleAction
должен не быть запущенным,
Как я мог это сделать?