ngFor Angular 지시문을 사용하는 방법
이 강력한 지시문에 대해 알아야 할 모든 내용과 이를 통해 시퀀스 작업을 훨씬 쉽게 만드는 방법을 알아보세요.
Angular는 지시어를 사용하여 웹 사이트의 특정 HTML 요소를 동적으로 렌더링합니다. 사용할 수 있는 구조적 지시문 중 하나는 ngFor입니다.
ngFor 지시문을 사용하면 동일한 블록을 지정된 횟수만큼 반복하거나 객체 배열을 반복하여 세부 정보를 표시할 수 있습니다. 이는 다른 개체 내의 개체를 렌더링하는 데에도 사용할 수 있는 강력한 도구입니다.
또한 특정 시나리오에서 유용할 수 있는 많은 기능이 있습니다. 여기에는 첫 번째와 마지막 요소 찾기 또는 특정 항목 건너뛰기가 포함됩니다.
ngFor를 사용하여 정적 숫자를 반복하는 방법
ngFor 지시문은 JavaScript가 지원하는 많은 유용한 루프 중 하나인 for 루프를 기반으로 합니다. Angular(14)의 현재 버전에서는 반복하려는 항목 수를 포함하는 배열을 생성해야 합니다.
-
ngFor 문 자체 내에서 목록을 만들 수 있습니다. 다음 코드는 인덱스 0~4를 사용하여 단락을 5번 반복합니다.
<div *ngFor='let item of [0, 1, 2, 3, 4]; let i = index'> <p> This is a repeated paragraph: {{item}} </p> </div> 위의 방법은 대규모 배열에는 적합하지 않을 수 있으므로 TypeScript 파일에서 동적으로 배열을 만들 수도 있습니다.
export class ExampleClass implements OnInit { numbers: Array<number> = []; constructor() { // This will dynamically create the following array: // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] this.numbers = Array(10).fill(1).map((x,i)=>i); } }그런 다음 HTML의 숫자 배열을 반복할 수 있습니다.
<div *ngFor='let item of numbers; let i = index'> <p>This is a repeated paragraph: {{item}}</p> </div>
특정 숫자를 건너뛰거나 스타일을 지정하는 방법
홀수 또는 짝수 ngFor 변수를 사용하여 모든 초 숫자를 확인할 수 있습니다. 이 기능이 유용할 수 있는 시나리오는 다른 색상을 사용하여 테이블의 모든 홀수 또는 짝수 행의 스타일을 지정하려는 경우입니다.
구성 요소의 CSS 파일에 몇 가지 새로운 CSS 클래스를 추가합니다. 짝수 또는 홀수 인덱스의 특정 요소에 사용할 스타일은 다음과 같습니다.
.red { color: red; } .blue { color: blue; }ngFor 문 내에서 홀수 및 짝수 변수를 선언합니다. 이는 Angular가 인식하는 변수입니다. 빨간색 CSS 클래스를 짝수에 할당하고 파란색 CSS 클래스를 홀수에 할당합니다.
<div *ngFor='let item of numbers; let odd = odd; let even = even' [ngClass]="{red: even, blue: odd}"> <p> This is a repeated paragraph: {{item}} </p> </div>ng Serve를 사용하여 Angular 웹사이트를 실행하고 웹 브라우저에서 엽니다. 짝수 및 홀수 HTML 요소는 CSS 클래스에 따라 서로 다른 스타일을 번갈아 사용합니다.
모든 짝수를 완전히 건너뛰려면 ngIf 지시어를 사용할 수 있습니다. 이렇게 하면 모든 홀수를 건너뛰고 짝수인 숫자만 표시됩니다.
<div *ngFor='let item of numbers; let even = even'> <p *ngIf='even'> This is a repeated paragraph: {{item}} </p> </div>
거꾸로 계산하는 방법
뒤로 계산하려면 목록을 뒤집거나 인덱스를 사용하여 루프를 통해 뒤로 계산하는 등의 전통적인 방법을 사용할 수 있습니다.
ngFor 문에서 인덱스 변수를 선언합니다. ngFor 내에서 배열 길이부터 시작하여 이미 반복한 항목 수를 뺍니다.
<div *ngFor="let item of numbers; let i = index;"> <p> This is a repeated paragraph: {{numbers.length-i-1}} </p> </div>TypeScript 파일에서 역방향 목록을 만들 수도 있습니다.
export class ExampleClass implements OnInit { numbers: Array<number> = []; reversedList: Array<number> = []; constructor() { this.numbers = Array(10).fill(1).map((x,i)=>i); this.reversedList = this.numbers.slice().reverse(); } }ngFor를 사용하여 역방향 목록을 반복합니다.
<div *ngFor='let item of reversedList; let i = index'> <p> This is a repeated paragraph: {{item}} </p> </div>
첫 번째 요소와 마지막 요소의 스타일을 다르게 지정하는 방법
첫 번째 및 마지막 각도 변수를 사용하여 다른 요소와 별도로 첫 번째 요소와 마지막 요소의 스타일을 지정할 수 있습니다. 이는 :first-child와 같은 CSS 의사 클래스를 사용하는 대신 사용할 수 있습니다.
ngFor 문에서 첫 번째 변수와 마지막 변수를 선언합니다. 이전 단계에서 ngClass 지시문을 사용하여 파란색 및 빨간색 CSS 클래스를 할당합니다. 파란색 CSS 클래스를 첫 번째 요소에 할당하고 빨간색 CSS 클래스를 마지막 요소에 할당합니다.
<div *ngFor='let item of numbers; let first = first; let last = last' [ngClass]= "{blue: first, red: last}"> <p> This is a repeated paragraph: {{item}} </p> </div>
ngFor를 사용하여 객체를 반복하는 방법
ngFor 지시문을 사용하여 객체를 반복하고 개별 변수에 액세스할 수 있습니다.
-
TypeScript 파일에 개체 목록을 만듭니다. 이 경우 세부 정보가 포함된 사람 목록이 표시됩니다.
export class ExampleClass implements OnInit { people = []; constructor() { this.people = [ { firstName: 'John', lastName: 'Smith', occupation: 'HR Manager', startDate: new Date("2019-02-05") }, { firstName: 'Mary', lastName: 'Johnson', occupation: 'Technical Officer', startDate: new Date("2016-01-07") }, { firstName: 'William', lastName: 'Brown', occupation: 'HR Officer', startDate: new Date("2018-03-03") }, ]; } } HTML에서 ngFor 루프를 사용하여 사람 목록을 반복합니다. 각 사람은 person 변수를 사용하여 액세스할 수 있습니다. person 변수를 사용하여 각 개인의 속성에 액세스할 수 있습니다.
<div *ngFor='let person of people; let i = index'> <h2> {{person.firstName}} {{person.lastName}} </h2> <p> {{person.occupation}} </p> <p> {{person.startDate}} </p> </div>
중첩된 ngFor를 사용하여 다른 객체 내부의 객체를 표시하는 방법
중첩된 for 루프를 사용하여 다른 개체 안에 개체를 표시할 수 있습니다.
사람 목록을 수정합니다. 각 사람은 비상 연락처 목록을 갖게 됩니다. 각 비상 연락처를 별도의 개체로 저장합니다.
this.people = [ { firstName: 'John', lastName: 'Smith', emergencyContacts: [ { name: 'Amanda Smith', relationship: 'Wife', phone: '0441239876' }, { name: 'Barry Smith', relationship: 'Son', phone: '0442239876'} ] }, { firstName: 'Mary', lastName: 'Johnson', emergencyContacts: [ { name: 'Mark Johnson', relationship: 'Husband', phone: '0443239876' } ] }, ];HTML에서 원래 루프 내에 중첩 루프를 만들어 각 비상 연락처를 반복하고 세부 정보를 표시합니다.
<div *ngFor='let person of people; let i = index'> <h2> {{person.firstName}} {{person.lastName}} </h2> <div *ngFor='let contact of person.emergencyContacts; let j = index'> <h5> Emergency Contacts: </h5> <p> {{contact.name}} </p> <p> {{person.relationship}} </p> <p> {{person.phone}} </p> </div> </div>
Angular에서 ngFor를 사용한 반복
ngFor 구조 지시문을 사용하여 웹 사이트의 HTML 요소를 동적으로 반복할 수 있습니다. 이를 통해 여러 개체에 대해 또는 지정된 횟수만큼 동일한 블록을 반복할 수 있습니다.
짝수 또는 홀수를 모두 건너뛰거나 첫 번째 요소와 마지막 요소의 스타일을 지정하는 등의 다른 트릭을 수행하는 데에도 사용할 수 있습니다. 또한 이를 사용하여 다른 개체 내의 많은 개체를 동적으로 렌더링할 수도 있습니다.
웹사이트를 더욱 동적으로 만드는 데 사용할 수 있는 다른 Angular 지시문이 있습니다. 여기에는 ngIf, ngSwitch, ngStyle, ngClass 및 ngModel이 포함됩니다.







