ãã®èšäºã§ã¯Router.navigate
ã¡ãœãããçšããŠä»¥äžã®ãã©ã¡ãŒã¿ãæž¡ãæ¹æ³ã説æããŠããŸãã
- ã«ãŒããã©ã¡ãŒã¿
- ã¯ãšãªãã©ã¡ãŒã¿
- URLãã©ã°ã¡ã³ã
- ãããªã¯ã¹URLãã©ã¡ãŒã¿
ããã°ã©ã äŸãçšããŠåããããã説æããããã«å¿æããŠããŸãããåèã«ãªãã°å¹žãã§ãã
Router.navigate ã¡ãœããã§ãã©ã¡ãŒã¿ãæž¡ãæ¹æ³
Router.navigate ã¡ãœããã¯Angularã®äžã§äœ¿çšãããã«ãŒã(URL)ã®å€æŽãè¡ãã¡ãœããã§ãã
Router.navigate
ã¡ãœããã§æž¡ãããšãã§ããäž»ãªãã©ã¡ãŒã¿ã®çš®é¡ãšãã®èª¬æã以äžã«ç€ºããŸãã
Router.navigate ã¡ãœããã§æž¡ãããšãã§ãããã©ã¡ãŒã¿
- ã«ãŒããã©ã¡ãŒã¿
- URLã®äžéšãšããŠåçã«æž¡ãããå€ã§ãã
- äŸãã°ã
/user/:id
ãšããã«ãŒããããå Žåãthis.router.navigate(['/user', 123])
ãšèšè¿°ãããšãid
ãã©ã¡ãŒã¿ã«123
ãæž¡ãããšãã§ããŸãã
- ã¯ãšãªãã©ã¡ãŒã¿
- URLã®æ«å°Ÿã«
?
ã§å§ãŸããããŒ/å€ãã®ãã¢ãšããŠæž¡ãããå€ã§ãã - äŸãã°ã
this.router.navigate(['/main'], { queryParams: { category: 'Angular' } })
ãšèšè¿°ãããšã/main?category=angular
ãšããURLãçæããããšãã§ããŸãã
- URLã®æ«å°Ÿã«
- URLãã©ã°ã¡ã³ã
- URLã®æ«å°Ÿã®
#
ã§å§ãŸãå€ã§ãã - äŸãã°ã
this.router.navigate(['/main'], { fragment: 'Angular' })
ãšèšè¿°ãããšã/main#Angular
ãšããURLãçæããããšãã§ããŸãã
- URLã®æ«å°Ÿã®
- ãããªã¯ã¹URLãã©ã¡ãŒã¿
- URLã®ç¹å®ã®ã»ã°ã¡ã³ãã®äžã«
;
ã§å§ãŸããããŒ/å€ãã®ãã¢ãšããŠæž¡ãããå€ã§ãã - äŸãã°ã
this.router.navigate(['/main', { category: 'Angular' }])
ãšèšè¿°ãããšã/main;category=Angular
ãšããURLãçæããããšãã§ããŸãã
- URLã®ç¹å®ã®ã»ã°ã¡ã³ãã®äžã«
ã§ã¯ããããåãã©ã¡ãŒã¿ã®æž¡ãæ¹ãšåãåãæ¹ãå®éã®ããã°ã©ã äŸã§èª¬æããŸãã
ããããŠèªã¿ãã
Router.navigateã¡ãœããã®åºæ¬çãªäœ¿ãæ¹ã«ã€ããŠã¯äžèšã®èšäºã§è©³ãã説æããŠããŸããèå³ã®ããæ¹ã¯äžèšã®ãªã³ã¯ãããã²ãã§ãã¯ãããŠã¿ãŠãã ããã ç¶ããèŠããAngularãRouter.navigate ã¡ãœããã§ã«ãŒãã£ã³ã°ããæ¹æ³
Router.navigate ã¡ãœããã§ã«ãŒããã©ã¡ãŒã¿ã䜿ãå Žå
Router.navigate
ã¡ãœããã§ã«ãŒããã©ã¡ãŒã¿ã䜿ãå Žåã®ããã°ã©ã äŸã以äžã«ç€ºããŠããŸãã
app-routing.module.ts
import { NgModule } from '@angular/core';
// RoutesãšRouterModuleãã€ã³ããŒã
import { Routes, RouterModule } from '@angular/router';
// é·ç§»å
ã®ã³ã³ããŒãã³ããã€ã³ããŒã
import { MainComponent } from './main.component';
// ã«ãŒãã£ã³ã°ããŒãã«ã§ãã¹ãšã³ã³ããŒãã³ãã®å¯Ÿå¿ä»ãããã
const routes: Routes = [
{ path: 'main/:id', component: MainComponent }, // ã«ãŒããã©ã¡ãŒã¿ã䜿ãå Žå
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule],
})
export class AppRoutingModule {}
ãpath: 'main/:id'ãã®éšåã®ã:idãã¯ã«ãŒããã©ã¡ãŒã¿ã瀺ããŠããŸãããããéããŠåçãªå€ãURLã«çµã¿èŸŒãããšãã§ããŸãã
app.component.ts
import { Component } from '@angular/core';
import { Router } from '@angular/router';
@Component({
selector: 'app-root',
template: `
<button (click)="onClick()">ã¡ã€ã³ããŒãž</button>
<router-outlet></router-outlet>
`,
})
export class AppComponent {
constructor(private router: Router) {}
onClick() {
// ã«ãŒããã©ã¡ãŒã¿ã䜿ãå Žå
this.router.navigate(['/main', 1]);
}
}
ã«ãŒããã©ã¡ãŒã¿ãæž¡ãéã«ã¯ã以äžã«ç€ºãããã«é åã䜿çšããŸãã
this.router.navigate(['/main', 1]);
ããã«ãããRouter.navigate
ã¡ãœãããå®è¡ããããšãURLã¯ä»¥äžã®ããã«ãªããŸãããªãããhttp://localhost:4200ãã®ç®æã¯ç°å¢ã«ãã£ãŠå€ãããŸã(ããŒã«ã«éçºãµãŒããŒã䜿çšããŠãããããŒã4200ã§å®è¡ããŠããå Žåã«ã¯ä»¥äžã®URLã«ãªããŸã)ã
http://localhost:4200/main/1
main.component.ts
import { Component } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
@Component({
template: `
<!-- ã«ãŒããã©ã¡ãŒã¿ã䜿ãå Žå -->
<h1>èšäºçªå· No.{{ id }}</h1>
`,
})
export class MainComponent {
//ã«ãŒããã©ã¡ãŒã¿ã䜿ãå Žå
id: string | null = null;
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.route.params.subscribe((params) => {
this.id = params['id'];
});
}
}
ã«ãŒããã©ã¡ãŒã¿ãååŸããéã«ã¯ãparamsããããã£ãŸãã¯paramMapããããã£ã䜿çšããŸããäžèšã®ããã°ã©ã ã§ã¯params
ããããã£ã䜿çšããŠãã«ãŒããã©ã¡ãŒã¿ãååŸããŠããŸãã
paramMap
ããããã£ãçšããå Žåã«ã¯ã以äžã«ç€ºãããã«èšè¿°ããŸããparamMap
ããããã£ã賌èªããget
ã¡ãœããã䜿çšããŠã«ãŒããã©ã¡ãŒã¿ã®å€ãååŸããŸãã
ngOnInit() {
this.route.paramMap.subscribe((paramMap) => {
this.id = paramMap.get('id');
});
}
ActivatedRoute
ã¯ã©ã¹ã®paramMap
ããããã£ã䜿çšããå ŽåãååŸããã«ãŒããã©ã¡ãŒã¿ã¯string
ãŸãã¯null
ã®äž¡æ¹ã®åãæã€å¯èœæ§ããããããid
ã®åãstring | null
ã«å€æŽããŠããŸãã
ActivatedRouteã®snapshotããããã£ã䜿ã£ãŠã«ãŒããã©ã¡ãŒã¿ãåãåãå Žå
ActivatedRoute
ã¯ã©ã¹ã®params
ããããã£ãparamsMap
ããããã£ã賌èªãã代ããã«ã以äžã«ç€ºãããã«ActivatedRoute
ã¯ã©ã¹ã®snapshot
ããããã£ã䜿ã£ãŠãçŽæ¥ã«ãŒããã©ã¡ãŒã¿ãååŸããããšãã§ããŸãã
ããã¯ãã³ã³ããŒãã³ããåæåããããšãã«äžåºŠã ãã«ãŒããã©ã¡ãŒã¿ãååŸããå Žåã«äŸ¿å©ã§ããããã䜿çšãããšãã«ãŒããã©ã¡ãŒã¿ã倿ŽãããŠãå賌èªããããšã¯ãããŸãããã«ãŒããã©ã¡ãŒã¿ãã³ã³ããŒãã³ãã®ã©ã€ããµã€ã¯ã«äžã§å€æŽãããããšããªãå Žåã«ç¹ã«åœ¹ç«ã¡ãŸãã
ngOnInit() {
// paramsã䜿çšããŠã«ãŒããã©ã¡ãŒã¿ãååŸ
this.id = this.route.snapshot.params['id'];
// paramsMapã䜿çšããŠã«ãŒããã©ã¡ãŒã¿ãååŸ
this.id = this.route.snapshot.paramMap.get('id');
}
paramsãšparamMapã®éã
params
ããããã£ããã³paramMap
ããããã£ã¯ã©ã¡ããActivatedRoute
ã¯ã©ã¹ã®ããããã£ã§ããparams
ããããã£ããã³paramMap
ããããã£ã®éãã以äžã«ç€ºããŸãã
params
ããããã£- Observableãªããžã§ã¯ããšããŠã«ãŒããã©ã¡ãŒã¿ãæäŸãã
ActivatedRoute
ã¯ã©ã¹ã®ããããã£ã§ãã - 賌èªããããšã§çŸåšã®ã«ãŒããã©ã¡ãŒã¿ã®å€ãååŸããããšãã§ããŸãã
- ååŸãããã«ãŒããã©ã¡ãŒã¿ã¯ã
{ key: string}
ã®åœ¢åŒã«ãªããŸãã
- Observableãªããžã§ã¯ããšããŠã«ãŒããã©ã¡ãŒã¿ãæäŸãã
paramsMap
ããããã£- Observableãªããžã§ã¯ããšããŠã«ãŒããã©ã¡ãŒã¿ãæäŸãã
ActivatedRoute
ã¯ã©ã¹ã®ããããã£ã§ãã - 賌èªããããšã§çŸåšã®ã«ãŒããã©ã¡ãŒã¿ã®å€ãååŸããããšãã§ããŸãã
- ååŸãããã«ãŒããã©ã¡ãŒã¿ã¯ã
ParamMap
ãªããžã§ã¯ããšããŠæäŸãããŸããParamMap
ãªããžã§ã¯ãã¯ããã©ã¡ãŒã¿ããã广çã«æäœããããã®ã¡ãœãã(äŸïŒget
,getAll
,has
ãªã©)ãæäŸããŠããŸãã
- Observableãªããžã§ã¯ããšããŠã«ãŒããã©ã¡ãŒã¿ãæäŸãã
Router.navigate ã¡ãœããã§ã¯ãšãªãã©ã¡ãŒã¿ã䜿ãå Žå
Router.navigate
ã¡ãœããã§ã¯ãšãªãã©ã¡ãŒã¿ã䜿ãå Žåã®ããã°ã©ã äŸã以äžã«ç€ºããŠããŸãã
app-routing.module.ts
import { NgModule } from '@angular/core';
// RoutesãšRouterModuleãã€ã³ããŒã
import { Routes, RouterModule } from '@angular/router';
// é·ç§»å
ã®ã³ã³ããŒãã³ããã€ã³ããŒã
import { MainComponent } from './main.component';
// ã«ãŒãã£ã³ã°ããŒãã«ã§ãã¹ãšã³ã³ããŒãã³ãã®å¯Ÿå¿ä»ãããã
const routes: Routes = [
{ path: 'main', component: MainComponent }, // ã¯ãšãªãã©ã¡ãŒã¿ã䜿ãå Žå
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule],
})
export class AppRoutingModule {}
Router.navigate
ã¡ãœããã䜿ã£ãŠã¯ãšãªãã©ã¡ãŒã¿ãæž¡ãå Žåãã«ãŒãã£ã³ã°å®çŸ©ã«ãããŠpath: 'main/:id'
ã®ãããªã«ãŒããã©ã¡ãŒã¿ãæç€ºçã«æå®ããå¿
èŠã¯ãããŸãããã¯ãšãªãã©ã¡ãŒã¿ã䜿çšããéã¯ãã·ã³ãã«ãªpath: 'main'
ã ãã§ååã§ãã
app.component.ts
import { Component } from '@angular/core';
import { Router } from '@angular/router';
@Component({
selector: 'app-root',
template: `
<button (click)="onClick()">ã¡ã€ã³ããŒãž</button>
<router-outlet></router-outlet>
`,
})
export class AppComponent {
constructor(private router: Router) {}
onClick() {
// ã¯ãšãªãã©ã¡ãŒã¿ã䜿ãå Žå
this.router.navigate(['/main'], {
queryParams: { category: 'Angular', keyword: 'Routing' },
});
}
}
ã¯ãšãªãã©ã¡ãŒã¿ãæž¡ãéã«ã¯ã以äžã«ç€ºãããã«queryParamsã䜿çšããŸãã
this.router.navigate(['/main'], {
queryParams: { category: 'Angular', keyword: 'Routing' },
});
ããã«ãããRouter.navigate
ã¡ãœãããå®è¡ããããšãURLã¯ä»¥äžã®ããã«ãªããŸãããªãããhttp://localhost:4200ãã®ç®æã¯ç°å¢ã«ãã£ãŠå€ãããŸã(ããŒã«ã«éçºãµãŒããŒã䜿çšããŠãããããŒã4200ã§å®è¡ããŠããå Žåã«ã¯ä»¥äžã®URLã«ãªããŸã)ã
http://localhost:4200/main?category=Angular&keyword=Routing
main.component.ts
import { Component } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
@Component({
template: `
<!--ã¯ãšãªãã©ã¡ãŒã¿ã䜿ãå Žå -->
<h1>ã«ããŽãªãŒ: {{ recieveCategory }}</h1>
<h1>ããŒã¯ãŒã: {{ recieveKeyword }}</h1>
`,
})
export class MainComponent {
// ã¯ãšãªãã©ã¡ãŒã¿ã䜿ãå Žå
recieveCategory: string | null = null;
recieveKeyword: string | null = null;
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.route.queryParams.subscribe((params) => {
this.recieveCategory = params['category'];
this.recieveKeyword = params['keyword'];
});
}
}
ã¯ãšãªãã©ã¡ãŒã¿ãååŸããéã«ã¯ãqueryParamsããããã£ãŸãã¯queryParamMapããããã£ã䜿çšããŸããäžèšã®ããã°ã©ã ã§ã¯queryParams
ããããã£ã䜿çšããŠãã¯ãšãªãã©ã¡ãŒã¿ãååŸããŠããŸãã
queryParamMap
ããããã£ãçšããå Žåã«ã¯ã以äžã«ç€ºãããã«èšè¿°ããŸããqueryParamMap
ããããã£ã賌èªããget
ã¡ãœããã䜿çšããŠã¯ãšãªãã©ã¡ãŒã¿ã®å€ãååŸããŸãã
ngOnInit() {
this.route.queryParamMap.subscribe((paramsMap) => {
this.recieveCategory = paramsMap.get('category');
this.recieveKeyword = paramsMap.get('keyword');
});
}
ActivatedRoute
ã¯ã©ã¹ã®queryParamMap
ããããã£ã䜿çšããå ŽåãååŸãããã©ã¡ãŒã¿ã¯string
ãŸãã¯null
ã®äž¡æ¹ã®åãæã€å¯èœæ§ããããããrecieveCategory
ãšrecieveKeyword
ã®åãstring | null
ã«å€æŽããŠããŸãã
ActivatedRoute ã® snapshot ããããã£ã䜿ã£ãŠã¯ãšãªãã©ã¡ãŒã¿ãåãåãå Žå
ActivatedRoute
ã¯ã©ã¹ã®queryParams
ããããã£ãqueryParamsMap
ããããã£ã賌èªãã代ããã«ã以äžã«ç€ºãããã«ActivatedRoute
ã¯ã©ã¹ã® snapshot
ããããã£ã䜿ã£ãŠãçŽæ¥ã¯ãšãªãã©ã¡ãŒã¿ãååŸããããšãã§ããŸãã
ããã¯ãã³ã³ããŒãã³ããåæåããããšãã«äžåºŠã ãã¯ãšãªãã©ã¡ãŒã¿ãååŸããå Žåã«äŸ¿å©ã§ããããã䜿çšãããšãã¯ãšãªãã©ã¡ãŒã¿ã倿ŽãããŠãå賌èªããããšã¯ãããŸãããã¯ãšãªãã©ã¡ãŒã¿ãã³ã³ããŒãã³ãã®ã©ã€ããµã€ã¯ã«äžã§å€æŽãããããšããªãå Žåã«ç¹ã«åœ¹ç«ã¡ãŸãã
ngOnInit() {
// queryParamsã䜿çšããŠã¯ãšãªãã©ã¡ãŒã¿ãååŸ
this.recieveCategory = this.route.snapshot.queryParams['category'];
this.recieveKeyword = this.route.snapshot.queryParams['keyword'];
// queryParamsMapã䜿çšããŠã¯ãšãªãã©ã¡ãŒã¿ãååŸ
this.recieveCategory = this.route.snapshot.queryParamMap.get('category');
this.recieveKeyword = this.route.snapshot.queryParamMap.get('keyword');
}
queryParamsãšqueryParamMapã®éã
queryParams
ããããã£ããã³queryParamMap
ããããã£ã¯ã©ã¡ããActivatedRoute
ã¯ã©ã¹ã®ããããã£ã§ããqueryParams
ããããã£ããã³queryParamMap
ããããã£ã®éãã以äžã«ç€ºããŸãã
queryParams
ããããã£- Observableãªããžã§ã¯ããšããŠã¯ãšãªãã©ã¡ãŒã¿ãæäŸãã
ActivatedRoute
ã¯ã©ã¹ã®ããããã£ã§ãã - 賌èªããããšã§çŸåšã®ã¯ãšãªãã©ã¡ãŒã¿ã®å€ãååŸããããšãã§ããŸãã
- ååŸãããã¯ãšãªãã©ã¡ãŒã¿ã¯ã
{ key: string}
ã®åœ¢åŒã«ãªããŸãã
- Observableãªããžã§ã¯ããšããŠã¯ãšãªãã©ã¡ãŒã¿ãæäŸãã
queryParamsMap
ããããã£- Observableãªããžã§ã¯ããšããŠã¯ãšãªãã©ã¡ãŒã¿ãæäŸãã
ActivatedRoute
ã¯ã©ã¹ã®ããããã£ã§ãã - 賌èªããããšã§çŸåšã®ã¯ãšãªãã©ã¡ãŒã¿ã®å€ãååŸããããšãã§ããŸãã
- ååŸãããã¯ãšãªãã©ã¡ãŒã¿ã¯ã
ParamMap
ãªããžã§ã¯ããšããŠæäŸãããŸããParamMap
ãªããžã§ã¯ãã¯ãã¯ãšãªãã©ã¡ãŒã¿ããã广çã«æäœããããã®ã¡ãœãã(äŸïŒget
,getAll
,has
ãªã©)ãæäŸããŸãã
- Observableãªããžã§ã¯ããšããŠã¯ãšãªãã©ã¡ãŒã¿ãæäŸãã
Router.navigate ã¡ãœããã§URLãã©ã°ã¡ã³ãã䜿ãå Žå
Router.navigate
ã¡ãœããã§URLãã©ã°ã¡ã³ã(ã¢ã³ã«ãŒããã©ã°ã¡ã³ãèå¥å)ã䜿ãå Žåã®ããã°ã©ã äŸã以äžã«ç€ºããŠããŸãã
app-routing.module.ts
import { NgModule } from '@angular/core';
// RoutesãšRouterModuleãã€ã³ããŒã
import { Routes, RouterModule } from '@angular/router';
// é·ç§»å
ã®ã³ã³ããŒãã³ããã€ã³ããŒã
import { MainComponent } from './main.component';
// ã«ãŒãã£ã³ã°ããŒãã«ã§ãã¹ãšã³ã³ããŒãã³ãã®å¯Ÿå¿ä»ãããã
const routes: Routes = [
{ path: 'main', component: MainComponent }, // URLãã©ã°ã¡ã³ãã䜿ãå Žå
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule],
})
export class AppRoutingModule {}
Router.navigate
ã¡ãœããã䜿ã£ãŠURLãã©ã°ã¡ã³ããæž¡ãå Žåãã«ãŒãã£ã³ã°å®çŸ©ã«ãããŠpath: 'main/:id'
ã®ãããªã«ãŒããã©ã¡ãŒã¿ãæç€ºçã«æå®ããå¿
èŠã¯ãããŸãããURLãã©ã°ã¡ã³ãã䜿çšããéã¯ãã·ã³ãã«ãªpath: 'main'
ã ãã§ååã§ãã
app.component.ts
import { Component } from '@angular/core';
import { Router } from '@angular/router';
@Component({
selector: 'app-root',
template: `
<button (click)="onClick()">ã¡ã€ã³ããŒãž</button>
<router-outlet></router-outlet>
`,
})
export class AppComponent {
constructor(private router: Router) {}
onClick() {
// URLãã©ã°ã¡ã³ãã䜿ãå Žå
this.router.navigate(['/main'], { fragment: 'Angular' });
}
}
URLãã©ã°ã¡ã³ããæž¡ãéã«ã¯ã以äžã«ç€ºãããã«fragmentã䜿çšããŸãã
this.router.navigate(['/main'], { fragment: 'Angular' });
ããã«ãããRouter.navigate
ã¡ãœãããå®è¡ããããšãURLã¯ä»¥äžã®ããã«ãªããŸãããªãããhttp://localhost:4200ãã®ç®æã¯ç°å¢ã«ãã£ãŠå€ãããŸã(ããŒã«ã«éçºãµãŒããŒã䜿çšããŠãããããŒã4200ã§å®è¡ããŠããå Žåã«ã¯ä»¥äžã®URLã«ãªããŸã)ã
http://localhost:4200/main#Angular
main.component.ts
import { Component } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
@Component({
template: `
<!--URLãã©ã°ã¡ã³ãã䜿ãå Žå -->
<h1>ãã©ã°ã¡ã³ã: {{ recieveFragment }}</h1>
`,
})
export class MainComponent {
// URLãã©ã°ã¡ã³ãã䜿ãå Žå
recieveFragment: string | null = null;
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.route.fragment.subscribe((frag) => {
this.recieveFragment = frag;
});
}
}
URLãã©ã°ã¡ã³ããååŸããéã«ã¯ãfragmentããããã£ã䜿çšããŸãã
ActivatedRoute
ã¯ã©ã¹ã®fragment
ããããã£ã䜿çšããå ŽåãååŸãããã©ã¡ãŒã¿ã¯ string
ãŸãã¯null
ã®äž¡æ¹ã®åãæã€å¯èœæ§ããããããrecieveFragment
ã®åãstring | null
ã«å€æŽããŠããŸãã
ActivatedRoute ã®snapshotããããã£ã䜿ã£ãŠURLãã©ã°ã¡ã³ããåãåãå Žå
ActivatedRoute
ã¯ã©ã¹ã®fragment
ããããã£ã賌èªãã代ããã«ã以äžã«ç€ºãããã«ActivatedRoute
ã®snapshot
ããããã£ã䜿ã£ãŠãçŽæ¥URLãã©ã°ã¡ã³ããååŸããããšãã§ããŸãã
ããã¯ãã³ã³ããŒãã³ããåæåããããšãã«äžåºŠã ãURLãã©ã°ã¡ã³ããååŸããå Žåã«äŸ¿å©ã§ããããã䜿çšãããšãURLãã©ã°ã¡ã³ãã倿ŽãããŠãå賌èªããããšã¯ãããŸãããURLãã©ã°ã¡ã³ããã³ã³ããŒãã³ãã®ã©ã€ããµã€ã¯ã«äžã§å€æŽãããããšããªãå Žåã«ç¹ã«åœ¹ç«ã¡ãŸãã
ngOnInit() {
this.recieveFragment = this.route.snapshot.fragment;
}
Router.navigate ã¡ãœããã§ãããªã¯ã¹URLãã©ã¡ãŒã¿ã䜿ãå Žå
Router.navigate
ã¡ãœããã§ãããªã¯ã¹URLãã©ã¡ãŒã¿ã䜿ãå Žåã®ããã°ã©ã äŸã以äžã«ç€ºããŠããŸãã
app-routing.module.ts
import { NgModule } from '@angular/core';
// RoutesãšRouterModuleãã€ã³ããŒã
import { Routes, RouterModule } from '@angular/router';
// é·ç§»å
ã®ã³ã³ããŒãã³ããã€ã³ããŒã
import { MainComponent } from './main.component';
// ã«ãŒãã£ã³ã°ããŒãã«ã§ãã¹ãšã³ã³ããŒãã³ãã®å¯Ÿå¿ä»ãããã
const routes: Routes = [
{ path: 'main', component: MainComponent }, // ãããªã¯ã¹URLã䜿ãå Žå
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule],
})
export class AppRoutingModule {}
Router.navigate
ã¡ãœããã䜿ã£ãŠãããªã¯ã¹URLãã©ã¡ãŒã¿ãæž¡ãå Žåãã«ãŒãã£ã³ã°å®çŸ©ã«ãããŠpath: 'main/:id'
ã®ãããªã«ãŒããã©ã¡ãŒã¿ãæç€ºçã«æå®ããå¿
èŠã¯ãããŸããããããªã¯ã¹URLãã©ã¡ãŒã¿ã䜿çšããéã¯ãã·ã³ãã«ãªpath: 'main'
ã ãã§ååã§ãã
app.component.ts
import { Component } from '@angular/core';
import { Router } from '@angular/router';
@Component({
selector: 'app-root',
template: `
<button (click)="onClick()">ã¡ã€ã³ããŒãž</button>
<router-outlet></router-outlet>
`,
})
export class AppComponent {
constructor(private router: Router) {}
onClick() {
// ãããªã¯ã¹URLã䜿ãå Žå
this.router.navigate([
'/main',
{ category: 'Angular', keyword: 'Routing' },
]);
}
}
ãããªã¯ã¹URLãã©ã¡ãŒã¿ãæž¡ãéã«ã¯ã以äžã«ç€ºãããã«é åã䜿çšããŸãã
this.router.navigate([
'/main',
{ category: 'Angular', keyword: 'Routing' },
]);
ããã«ãããRouter.navigate
ã¡ãœãããå®è¡ããããšãURLã¯ä»¥äžã®ããã«ãªããŸãããªãããhttp://localhost:4200ãã®ç®æã¯ç°å¢ã«ãã£ãŠå€ãããŸã(ããŒã«ã«éçºãµãŒããŒã䜿çšããŠãããããŒã4200ã§å®è¡ããŠããå Žåã«ã¯ä»¥äžã®URLã«ãªããŸã)ã
http://localhost:4200/main;category=Angular;keyword=Routing
main.component.ts
import { Component } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
@Component({
template: `
<!--ãããªã¯ã¹URLã䜿ãå Žå -->
<h1>ã«ããŽãªãŒ: {{ recieveCategory }}</h1>
<h1>ããŒã¯ãŒã: {{ recieveKeyword }}</h1>
`,
})
export class MainComponent {
// ãããªã¯ã¹URLã䜿ãå Žå
recieveCategory: string | null = null;
recieveKeyword: string | null = null;
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.route.params.subscribe((params) => {
this.recieveCategory = params['category'];
this.recieveKeyword = params['keyword'];
});
}
}
ãããªã¯ã¹URLãã©ã¡ãŒã¿ãååŸããéã«ã¯ãparamsããããã£ãŸãã¯paramMapããããã£ã䜿çšããŸããäžèšã®ããã°ã©ã ã§ã¯params
ããããã£ã䜿çšããŠããããªã¯ã¹URLãã©ã¡ãŒã¿ãååŸããŠããŸãã
paramMap
ããããã£ãçšããå Žåã«ã¯ã以äžã«ç€ºãããã«èšè¿°ããŸããparamMap
ããããã£ã賌èªããget
ã¡ãœããã䜿çšããŠãããªã¯ã¹URLãã©ã¡ãŒã¿ã®å€ãååŸããŸãã
ngOnInit() {
this.route.paramMap.subscribe((paramMap) => {
this.recieveCategory = paramMap.get('category');
this.recieveKeyword = paramMap.get('keyword');
});
}
ActivatedRoute
ã¯ã©ã¹ã® params
ããããã£ãŸãã¯paramMap
ããããã£ã䜿çšããå ŽåãååŸãããã©ã¡ãŒã¿ã¯string
ãŸãã¯null
äž¡æ¹ã®åãæã€å¯èœæ§ããããããrecieveCategory
ãšrecieveKeyword
ã®åãstring | null
ã«å€æŽããŠããŸãã
ActivatedRouteã®snapshotããããã£ã䜿ã£ãŠãããªã¯ã¹URLã®ãã©ã¡ãŒã¿ãåãåãå Žå
ActivatedRoute
ã¯ã©ã¹ã®params
ããããã£ãparamsMap
ããããã£ã賌èªãã代ããã«ã以äžã«ç€ºãããã«ActivatedRoute
ã¯ã©ã¹ã®snapshot
ããããã£ã䜿ã£ãŠãçŽæ¥ãããªã¯ã¹URLã®ãã©ã¡ãŒã¿ãååŸããããšãã§ããŸãã
ããã¯ãã³ã³ããŒãã³ããåæåããããšãã«äžåºŠã ããããªã¯ã¹URLã®ãã©ã¡ãŒã¿ãååŸããå Žåã«äŸ¿å©ã§ããããã䜿çšãããšããããªã¯ã¹URLã®ãã©ã¡ãŒã¿ã倿ŽãããŠãå賌èªããããšã¯ãããŸããããããªã¯ã¹URLã®ãã©ã¡ãŒã¿ãã³ã³ããŒãã³ãã®ã©ã€ããµã€ã¯ã«äžã§å€æŽãããããšããªãå Žåã«ç¹ã«åœ¹ç«ã¡ãŸãã
ngOnInit() {
// paramsã䜿çšããŠãããªã¯ã¹URLãã©ã¡ãŒã¿ãååŸ
this.recieveCategory = this.route.snapshot.params['category'];
this.recieveKeyword = this.route.snapshot.params['keyword'];
// paramsMapã䜿çšããŠãããªã¯ã¹URLãã©ã¡ãŒã¿ãååŸ
this.recieveCategory = this.route.snapshot.paramMap.get('category');
this.recieveKeyword = this.route.snapshot.paramMap.get('keyword');
}
æ¬èšäºã®ãŸãšã
ãã®èšäºã§ã¯Router.navigate
ã¡ãœãããçšããŠä»¥äžã®ãã©ã¡ãŒã¿ãæž¡ãæ¹æ³ã説æããŸããã
- ã«ãŒããã©ã¡ãŒã¿
- ã¯ãšãªãã©ã¡ãŒã¿
- URLãã©ã°ã¡ã³ã
- ãããªã¯ã¹URLãã©ã¡ãŒã¿
ãèªã¿é ãããããšãããããŸããã