はじめに
Angularの新しいバージョンでは、ルーティング制御でwithComponentInputBinding()を使うことで、URLのパスの一部(URLパラメータ)を、@Inputで取得できるようになりました。
今回はそれについて解説していきます。
バージョンはAngular 18です。
実装方法
ルートの設定
app.config.tsファイルで、withComponentInputBindingの設定を入れます。
export const appConfig: ApplicationConfig = {
providers: [
~
provideRouter(routes, withComponentInputBinding()),
]
};
次に、app.routes.tsファイルで、パス設定をしていきます。
export const routes: Routes = [
{ path: 'product/:id', component: ProductComponent },
];
今回の目的であるURLパラメータは、product/:idの部分で設定しています。
コンポーネントの作成
ルート先のコンポーネントを作成します。
export class ProductComponent {
@Input()
id!: string;
}
ここで、@Input()をつかって、 product/:id のidを宣言すれば、ルート切替時にURLパラメータから、値をこの変数に設定されます。
画面で確認するために、コンポーネントのテンプレート側にidのデータを表示させてみます。
<h2>Product ID: {{ id }}</h2>
実行結果
「http://localhost:4200/product/11」のURLを入力してサイトを開いたら、
しっかりとURLのパラメータが表示されていることを確認できました。