我目前的配置:
const routes: Routes = [
{ path: '', component: NavComponent, outlet: 'nav' }, // (1)
{ path: '**', component: NavComponent, outlet: 'nav' } // (2)
];
有用。NavComponent
总是渲染到出口nav
。特别是,它适用于以下所有类型的 URL:
http://example.com/foo(nav:bar) // (a) non-empty path in nav --> (2)
http://example.com/foo(nav:) // (b) empty path in nav --> (2)
http://example.com/foo // (c) no nav at all --> (1)
请注意,路由器将不同的路由匹配到这些 URL:
(1)
是用来(c)
(2)
用于(a)
和(b)
这就是为什么NavComponent
每次位置更改时都会销毁并重新创建实例 from(c)
到(a)
。这是我需要防止的事情。我需要保留我的实例,因为它的状态、动画等。据我所知,只有当所有 URL 都使用相同的路由时才有可能,但是我找不到这样做的方法。如果我删除(1)
,像这样的 URL将(c)
停止显示NavComponent
在nav
. 显然**
与此类 URL 不匹配(但我不确定为什么)。
你可以在这里看到它的实际效果:https ://stackblitz.com/edit/angular-ptzwrm
这里的正确解决方案是什么?
现在,我像在解析UrlSerializer
之前一样添加(nav:)
到 URL(c)
中,但感觉就像是 hack。