[Angular] (提示)在不使用Angular的路由器的情况下,只需修改URL
想要改变URL而不改变Angular路由的情况下
非常特殊,但有以下原因想要保持Angular上的路由不变(不进行跳转),只想改变URL。
-
- 2種類のpathから1つのページ(コンポーネント群)を呼び出したい。 (path違いでコンポーネントの状態 true/false が変わる)
-
- httpリクエストでデータ取得処理をコンポーネントの初期化時に実行している
-
- ページ遷移後に、path(状態)の行き来をしたい
- リロードした際に同じ状態で再現して欲しい
我想从这两种路径中调用一个页面(组件集)。这意味着以下内容。
// HOGEでもFUGAでも HogeIndexPageComponentへ
const routes: SsRoute[] = [
// hoge
{
path: HOGE.path,
component: HogeIndexPageComponent,
data: HOGE.data,
},
// fuga
{
path: FUGA.path,
component: HogeIndexPageComponent,
data: FUGA.data,
},
];
export const routing = RouterModule.forChild(routes);
在这种情况下,当改变状态时,通过router.navigate进行导航(由于ngOnInit等生命周期会重新运行,导致http的get请求处理变得无用)引发
// 通常の遷移処理
const url: string = 'fuga';
this.router.navigate([url], {replaceUrl: true});
// fugaのルーティングとして、構成コンポーネント群のライフサイクルが1から回る
所以,作為本次的方法,如果不想讓Angular知道的情況下改變URL(不推薦),可以使用history.replaceState。
const url: string = 'fuga';
history.replaceState('', '', url);
// urlは変わるがライフサイクルはまわらない
也许Angular内部可能已经存在这种路由器选项…但是我无法找到它。