У меня есть некоторые проблемы с угловым маршрутизатором и именованными розетками. У меня есть список участников, и я хочу отредактировать выбранного участника на той же странице в именованном выходе маршрутизатора. И я хотел бы иметь обработку членов в лениво загруженном модуле.
Это работает, когда модуль не лениво загружен. Шаблон выглядит так:
<tr *ngFor="let member of members">
...
<a [routerLink]="['/home/member', {outlets: {right: ['memberedit', member._id]}}]"> Edit</a>
И массив маршрутов:
const routes: Routes = [
{
path: 'home', component: HomeComponent,
children: [
{
path: 'member', component: MemberComponent,
children: [
{
path: 'memberlist', component: MemberListComponent,
resolve: { resolvedListData: MemberListResolver },
},
{
path: 'memberedit/:id', component: MemberEditComponent,
resolve: { resolvedMember: MemberResolver }
outlet: 'right',
},
]
},
]
},
{ path: '', redirectTo: '/home', pathMatch: 'full' },
{ path: '**', component: NotFoundComponent }
];
Когда я пытаюсь удалить ссылку на /home/member, чтобы подготовиться к отложенной загрузке, это больше не работает:
Я пробовал с:
<a [routerLink]="[{outlets: {right: ['memberedit', member._id]}}]">Edit</a>
Это не работает, я думаю, это известная ошибка, маршрутизатор создает этот URL-адрес с одной косой чертой после списка участников:
/home/member/memberlist/(right:memberedit/5f39748b88457a30e32e909d)
И я пробовал с:
<a [routerLink]="['../', {outlets: {right: ['memberedit', member._id]}}]"> Edit</a>
Это работает, когда я в первый раз нажимаю на члена. И дает этот URL:
/home/member/(memberlist//right:memberedit/5f39748b88457a30e32e909d)
Во второй раз, когда я нажимаю на другого участника, я получаю эту ошибку:
Error: Two segments cannot have the same outlet name: 'memberedit/5f4227887687e3162d94f5a3' and 'memberedit/5f39748b88457a30e32e909d'.
И URL-адрес:
/home/member/(/(right:memberedit/5f4227887687e3162…f5a3)//right:memberedit/5f39748b88457a30e32e909d)"
Я также пробовал с:
<a [routerLink]="[{outlets: {primary: ['memberlist'], right: ['memberedit', member._id]}}]">Edit</a>
<a [routerLink]="['../', {outlets: {primary: ['memberlist'], right: ['memberedit', member._id]}}]">Edit</a>
Без всякого везения.
Я пробовал с полным путем в лениво загруженном модуле, который не работает.
<a [routerLink]="['/home/member', {outlets: {right: ['memberedit', member._id]}}]"> Edit</a>
Дает:
url: "/home/member/(memberlist//right:memberedit/5f39748b88457a30e32e909d)", urlAfterRedirects: "/home/member"
И я пробовал все вышеперечисленное в модуле с ленивой загрузкой. Любые идеи?
memberlist
? Вы пробовали что-то подобное?[routerLink]=['/home/member', { outlets: { primary: 'memberlist' } }]
, В конце концов, вы можете попробовать использоватьRouter.navigateByUrl('/home/member/(memberlist)')
. - person Andrei Gătej   schedule 26.08.2020https://angular-ivy-ebjcn2.stackblitz.io
- person Peter Heick   schedule 27.08.2020/home/member', { outlets: ...
, верно? Есть ли другие проблемы? - person Andrei Gătej   schedule 27.08.2020