*ngFor 반복문

mock heroes 생성

http로 데이터 모델을 생성하는게 일반적이지만 그 부분은 나중에 다뤄보기로 하고 여기서는 임의의 mock 데이터 모델을 생성한다.

이제 이 mock 데이터를 heroes 컴포넌트에 할당한다.

view에 바인딩한다. 같은 데이터를 여러번 반복하기위해  *ngFor 를 사용한다. let ~ of  반복문은 es6에 새로나온 방법이다. 기존 for ~ in 반복문은 배열의 인덱스 혹은 객체의 키값을 가져오는 방법이나 let ~ of 는 해당 컬렉션을 반복한다.

 

master/detail 구조 만들기

리스트를 클릭하면 상세화면이 하단에 나타나도록 만들자.  클릭 이벤트를 추가한다.

오른쪽이 true가 되면 class=”selected” 가 렌더링 된다. false가 되면 아무것도 렌더링 되지 않는다.

클릭하면 selectedHero 변수에 선택된 객체를 담는다.

템플릿 하단에 상세화면을 추가한다.

 

*ngIf 로 dom 감추기

input box를 수정할때 detail 영역뿐만 아니라 list 쪽도 수정이 된다는것에 유념하자.

 

Bootstrap 으로 style 하기

  • 기본 스타일을 scss로 변경하기

angular.json에 styles를 src/styles.scss 로 변경하고 해당 화일명도 변경한다.

  • angular-cli에서 컴포넌트 생성할때 기본 css화일을 scss로 변경하기

angular.json에 schematics를 적용한다.

  • bootstrap 적용하기

bootstrap4가 2018년 초에 정식 버전이 release 되었다.  bootstrap3에 비해서 가장 크게 달라진점은 CSS3에 도입된 flex layout이다. 설치해보자.

 

style.scss에 bootstrap 스타일을 import한다.

  • bootstrap으로 스타일하기

d-flex는 flex layout을 적용한다.

p-2는 0.5rem 패딩을 적용한다. bg-primary와 text-light는 각각 배경색과 글자색을 지정한다.

 

선택된 열 style 하기 – class 바인딩 이용

선택을 하면 해당 li에 selected 라는 클래스를 클래스 바인딩 문법을 이용하여 삽입한다.

selected 클래스에 대해서 배경색과 글자색을 다르게 설정한다.

여기서는 scss로 작성하였다. css 에는 없는 네스팅 구조를 이용하여 트리형태로 구성하였고, & 부모참조 연산자를 사용하였다. &selected 라고 하게 되면 자식이 아니라 부모를 직접 참조하게 된다.