이 글은 Angular의 라우팅을 이해하고, 라우팅의 기본 사용법을 소개하고, 매개변수를 받는 방법을 알아보는 데 도움이 되기를 바랍니다.
환경:
Angular CLI: 11.0.6
Angular: 11.0.7
노드: 12.18.3
npm : 6.14.6
IDE : Visual Studio Code
간단히 말하면, 주소 표시줄에는 서로 다른 주소(URL)가 서로 다른 페이지에 해당하며, 이는 라우팅입니다. 또한 브라우저의 앞으로 및 뒤로 버튼을 클릭하면 브라우저는 다시 라우팅에 따라 검색 기록에서 앞으로 또는 뒤로 탐색합니다. [관련 튜토리얼 추천: "angular Tutorial"]
Angular에서 Router는 @angular/router 모듈에 정의된 독립 모듈입니다.
새로운 AngularCLI 기반 프로젝트의 경우 초기화 중 옵션을 통해 기본적으로 app.comComponent.ts에 AppRoutingModule을 추가할 수 있습니다.
2.1. 준비
우선 라우팅 사용법을 설명하기 위해 2개의 페이지를 만듭니다.
ng g c page1 ng g c page2
위의 AnuglarCLI 명령을 사용하여 Page1Component, Page2Component 2 구성 요소를 만듭니다.
2.2. 경로 등록
//src\app\app-routing.module.ts const routes: Routes = [ { path: 'page1', component: Page1Component }, { path: 'page2', component: Page2Component }, ]; @NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule], }) export class AppRoutingModule {}
보시다시피 간단한 경로 등록에는 경로의 상대 경로와 이 경로의 응답 구성 요소를 각각 정의하는 두 가지 속성인 경로와 구성 요소만 필요합니다.
2.3.html에서의 사용법
<a routerLink="page1">Page1</a> | <a routerLink="page2">Page2</a>
html 템플릿에서 직접 routerLink 속성을 사용하고 경로를 각도로 식별합니다. 코드를 실행하면 Page1과 Page2라는 두 개의 하이퍼링크를 볼 수 있습니다. 클릭하면 주소 표시줄 주소가 http://localhost:4200/page2 또는 http://localhost:4200/page1로 변경되는 것을 확인할 수 있습니다. page1 및 page2에서 전환
2.4.ts 코드에서의 사용
때때로 TS의 비즈니스 로직을 기반으로 점프해야 합니다. ts에서는
constructor(private router: Router) {}
Jump code:
// 跳转到 /page1 this.router.navigate(['/page1']); // 跳转到 /page1/123 this.router.navigate(['/page1', 123]);
3.1. 일반적으로 우리는 매개변수를 매개변수로 사용합니다. /users/1과 같은 url 섹션은 ID가 1인 사용자를 나타냅니다. 경로는 "/users/id" 스타일로 정의됩니다. 예를 들어 간단한 페이지의 경우 page1 페이지가 id 매개변수를 전달할 수 있으므로 라우팅을 다음과 같이 수정해야 합니다.
const routes: Routes = [ { path: 'page1/:id', //接收id参数 component: Page1Component, }, { // 实现可选参数的小技巧。 这个routing处理没有参数的url path: 'page1', redirectTo: 'page1/', // 跳转到'page1/:id' }, { path: 'page2', component: Page2Component, }, ];
ts 코드가 매개변수를 읽을 때 먼저 ActivatedRoute를 삽입해야 합니다. 코드는 다음과 같습니다.
constructor(private activatedRoute: ActivatedRoute) {} ngOnInit(): void { this.activatedRoute.paramMap.subscribe((params) => { console.log('Parameter id: ', params.get('id')); // 地址 http://localhost:4200/page1/33 // 控制台输出:Query Parameter name: 33 // 地址 http://localhost:4200/page1/ // 控制台输出:Query Parameter name: (实际结果为undefined) }); }
3.2 매개변수(QueryParameter)에 매개변수
를 쓰는 또 다른 방법이 있습니다(예: http://localhost:4200/?name=cat, 즉 URL 주소 뒤에). , 물음표 '?'를 추가한 후 매개변수 이름과 매개변수 값('name=cat')을 추가합니다. 이를 쿼리 매개변수(QueryParameter)라고 합니다. 이 쿼리 매개변수를 사용하는 경우 paramMap이 queryParamMap으로 변경된다는 점을 제외하면 이전 라우팅 매개변수와 유사합니다. 코드는 다음과 같습니다.
this.activatedRoute.queryParamMap.subscribe((params) => { console.log('Query Parameter name: ', params.get('name')); // 地址 http://localhost:4200/page1?name=cat // 控制台输出:Query Parameter name: cat // 地址 http://localhost:4200/page1/ // 控制台输出:Query Parameter name: (实际结果为undefined) });4. URL 경로 표시 형식은
// app-routing.ts @NgModule({ imports: [RouterModule.forRoot(routes, { useHash: true })], exports: [RouterModule], })5와 같이 app-routing.ts에
useHash: true
패키징 후 배포 문제는 공식 Wi-Fi(https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-configure-your-server-to-)를 확인하세요. work-with-html5mode)
더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 비디오를 방문하세요! !
위 내용은 Angular 학습 라우팅에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!