본문 바로가기

Student/모여서 각자 코딩

19년도 여름방학 모각코 4일차 회고 0705

angular 라우팅


angular는 SPA 이므로 페이지가 하나이다. 그런데 페이지를 구분해야 하는 경우에는 경로 route로 보여지는 뷰만 다르게 해서 리로딩없이 다른 페이지로 넘어갈 수 있다. routing을 해보자.

src/app/app-routing.module.ts

import { NgModule }             from '@angular/core';
import { RouterModule, Routes } from '@angular/router';

import { DashboardComponent }   from './dashboard.component';
import { HeroesComponent }      from './heroes.component';
import { HeroDetailComponent }  from './hero-detail.component';

const routes: Routes = [
  { path: '', redirectTo: '/dashboard', pathMatch: 'full' },
  { path: 'dashboard',  component: DashboardComponent },
  { path: 'detail/:id', component: HeroDetailComponent },
  { path: 'heroes',     component: HeroesComponent }
];

@NgModule({
  imports: [ RouterModule.forRoot(routes) ],
  exports: [ RouterModule ]
})
export class AppRoutingModule {}

라우팅 ts를 만들면 모듈.ts를 업데이트 해주어야한다.
src/app/app.module.ts (after)

import { NgModule }       from '@angular/core';
import { BrowserModule }  from '@angular/platform-browser';
import { FormsModule }    from '@angular/forms';

import { AppComponent }         from './app.component';
import { DashboardComponent }   from './dashboard.component';
import { HeroDetailComponent }  from './hero-detail.component';
import { HeroesComponent }      from './heroes.component';
import { HeroService }          from './hero.service';

import { AppRoutingModule }     from './app-routing.module';

@NgModule({
  imports: [
    BrowserModule,
    FormsModule,
    AppRoutingModule
  ],
  declarations: [
    AppComponent,
    DashboardComponent,
    HeroDetailComponent,
    HeroesComponent
  ],
  providers: [ HeroService ],
  bootstrap: [ AppComponent ]
})
export class AppModule { }

import안에 AppRoutingModule 컴포넌트 이름을 넣어줌으로써 route는 끝났다. 그리고
html view에서 path로 라우팅을 할 때는 routerlink 속성을 이용하면된다.
예시 <a routerlink="main"> main </a> 이렇게 하면 main클릭시 localhost:4200/main로 이동한다.
버튼도 마찬가지로 라우팅 할 수 있다. <button routerlink="main"> main </button>