我能找到关于同一主题的最接近的问题是:angular 4 router without router-outlet
...但它是关于Angular 4中的一个实验性功能,似乎不再受支持了。
我有一个现有的天文网络应用程序(http://skyviewcafe.com/)根本不使用路由。所有各种功能都可以通过标签界面访问,不会改变路线。
我希望能够使用URL来指定哪个选项卡式面板出现,然后最终比设置时间和位置以及查看选项的URL更进一步,因此一个人可以使用URL来显示另一个人对天文事件有特殊看法。
到目前为止看起来我没有路由器插座就好了:http://test.skyviewcafe.com/
到目前为止,我没有尝试过应用程序或抛出任何控制台异常。我只是订阅路由器事件,所以我知道何时更改选择哪个选项卡:
router.events.subscribe(event => {
if (event instanceof NavigationEnd) {
const url = event.url;
const newTab = tabNames.map(name => '/' + name).indexOf(url);
if (newTab >= 0)
this.currentTab = newTab;
else
this.currentTab = CurrentTab.SKY;
}
});
...并在选择标签时导航到路线:
public set currentTab(newTab: CurrentTab) {
if (this._currentTab.getValue() !== newTab) {
this._currentTab.next(newTab);
this.router.navigate(['/' + tabNames[this._currentTab.getValue()]]);
}
}
我对结果感到满意,但是我感到唠叨的感觉它不正确以这种方式进行路由。
如果标签视图是我每条路线唯一改变的地方,我该怎么做才能使用路由器插座?使标签只是装饰性的,而不是实际拥有任何标签式面板,用<router-outlet></router-outlet>
替换标签下方的整个区域?