10. SVG를 템플릿으로 사용하기
Angular 애플리케이션에서는 SVG 파일을 템플릿으로 활용할 수 있다. SVG 파일을 템플릿으로 사용하면 SVG 엘리먼트 안에서도 HTML 템플릿과 마찬가지로 디렉티브를 사용하거나 바인딩 문법을 활용할 수 있다. 그래서 그래픽을 동적으로 구성할 때 활용할 수 있다.
1. SVG 문법 예제
SVG를 템플릿으로 사용한다면 컴포넌트 클래스 코드를 이렇게 작성할 수 있다.
src/app/svg.component.ts
import { Component } from "@angular/core";
@Component({
selector: "app-svg",
templateUrl: "./svg.component.svg",
styleUrls: ["./svg.component.css"],
})
export class SvgComponent {
fillColor = "rgb(255, 0, 0)";
changeColor() {
const r = Math.floor(Math.random() * 256);
const g = Math.floor(Math.random() * 256);
const b = Math.floor(Math.random() * 256);
this.fillColor = `rgb(${r}, ${g}, ${b})`;
}
}
이 클래스 코드와 프로퍼티와 이벤트를 바인딩하려면 svg.component.svg
파일을 이렇게 구성하면 된다:
src/app/svg.component.svg
<svg>
<g>
<rect x="0" y="0" width="100" height="100" [attr.fill]="fillColor" (click)="changeColor()" />
<text x="120" y="50">click the rectangle to change the fill color</text>
</g>
</svg>
이 코드에서 click()
부분에는 이벤트 바인딩 문법이 사용되었고, [attr.fill]="fillColor"
부분에는 프로퍼티 바인딩 문법이 사용되었다.