[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内部可能已经存在这种路由器选项…但是我无法找到它。

广告
将在 10 秒后关闭
bannerAds