ここで言う**URLハッシュ(url hash)**というのはページ内リンクを踏んだときにURLに#
から始まる文字列で表されるアレのことです。URLフラグメント(url fragment)とも言います。
(例: https://myblog.com/page1#intro
の#intro
)
結論
ActivatedRouteのfragmentプロパティを参照しましょう。fragment
の型はObservable<string>
です。
app.component.ts
@Component({
selector: 'app-root',
template: `
<div>Current URL fragment: {{ fragment | json }}</div>
<div id="url-fragment"></div>
<a routerLink="/" fragment="url-fragment">Jump to the URL fragment</a>
`
})
export class AppComponent implements OnInit {
fragment: string;
constructor(private route: ActivatedRoute) { }
ngOnInit(): void {
this.route.fragment.subscribe(fragment => {
console.log(`ActivatedRoute.fragment: ${fragment} (typeof: ${typeof fragment})`);
console.log(`window.location.hash: ${window.location.hash}`);
this.fragment = fragment;
});
}
}
注意点
StackBuiltzのサンプルを動かしてみるとわかりますが、URLにURLハッシュが含まれない場合、このfragment
は空文字列が流れた後、nullが流れます。
また、window.location.hash
と異なり、先頭の**#**は含まれません。