화면을 구성하려면 뷰를 가지는 컴포넌트를 생성해야 한다.
웹어플리케이션을 개발하게되면 화면을 구성하는 영역별로 기능을 분류하게 된다.
영역별로 화면을 구성하는 컴포넌트들을 만들게 되므로 만들어진 컴포넌트들도 기능과 영력별로 그룹을 만들어 관리하게 된다.
컴포넌트들을 그룹으로 관리하는 것이 앵귤러 ng모듈이며 앵귤러에서 새프로젝트를 생성하면 기본적으로 하나의 ng모듈이 만들어진다.
컴포넌트를 생성하여 화면에 보이게하려면 ng모듈에 등록과정이 필요하고 앵귤러는 ng모듈을 관리하게 된다.
앵귤러는 컴포넌트들을 모아놓은 ng모듈을 관리하듯 라우팅을 관리하는 라우팅모듈, 폼모듈..등의 모듈들을 관리한다.
웹어플리케이션이서 라우팅기능이 필요하면 라우팅모듈을 메인모듈(app.module.ts)에 등록해야 한다.
더우기 라우팅은 컴포넌트뷰와 관련이 있기때문에 ng모듈마다 라우팅모듈을 등록하게 된다.
RouterModule라이브러리를 app.module.ts에 임포트하고 등록해야 한다.
세부적으로 라우팅규칙(이벤트에따른 컴포넌트전환규칙)을 만들어 앵귤러에 등록해야 한다.
라우팅규칙이 앵귤러에등록되면 주소창에 라우팅규칙에맞게 입력하면 앵귤러가 url을 캐치하여 라우팅규칙에 따라 해당 컴포넌트를 화면에 보여준다.
라우팅규칙에 맞지않는 주소가 입력되면 에러가 발생하며 스크립트는 중단된다.
링크나 이벤트등으로 컴포넌트전환이 필요하면 라우팅규칙에 맞게 디렉티브를 설정하면 앵귤러가 주소창 url을 변경하고 컴포넌트를 변경한다.
ngModule에 라우팅모듈과 라우터라이브러리를 불러오고 등록하면 별도의 라우팅ngModule을 사용하지 않아도 된다.
하지만 규모가 커지면 라우팅모듈도 모듈화하여 관리하는 것이 바람직하다.
ng모듈이 많아지면 모듈들을 잘 관리해야 한다.
app.module.ts
컴포넌트들은 하위 ngModule에 등록되기 때문에 여기엔느 AppComponent와 같은 메인에서 사용되는 컴포넌트만 등록된다.
ng모듈들을 등록하여 관리한다.
주의사항
라우팅모듈들의 순서를 주의해야 한다.
AppRoutingModule에는 기본적인 규칙만정하고 세부적인 다른 모듈에서 규칙을 정한다.