SVG in Angular: Complete Developer Guide
Safely and efficiently embed SVG in Angular apps — from inline icons to dynamically loaded illustrations.
Drop your image here
Supports PNG, JPG, BMP, WEBP up to 5MB
Method 1: SVG in Angular Component Templates
Paste SVG XML directly in Angular component templates. Angular template syntax works inside SVG.
- <svg [attr.width]='size' viewBox='0 0 24 24'><path [attr.fill]='color' d='...'/></svg>
- Use [attr.fill]='color' (not just [fill]) — SVG attributes require attr. binding
- Import SVG width/height as @Input() for dynamic sizing
- ngClass and ngStyle work on SVG elements
Method 2: SVG as Asset (src URL)
Place SVGs in src/assets/. Reference via path in templates.
- <img src='assets/logo.svg' alt='Logo' width='200'>
- No module import needed — assets/ is served directly
- For dynamic paths: <img [src]='iconPath'>
- SVG assets are copied to dist/ by Angular's build
Method 3: DomSanitizer for Dynamic SVG
For SVG loaded via HTTP or dynamically generated, use Angular's DomSanitizer to avoid XSS.
- Import: DomSanitizer from @angular/platform-browser
- Sanitize: this.sanitizer.bypassSecurityTrustHtml(svgString)
- Render: <div [innerHTML]='safeSvg'></div>
- Only bypass trust for SVG from trusted sources (your own API)
Method 4: Angular Material's Icon System
Angular Material provides a built-in SVG icon system via MatIconModule.
- Import MatIconModule
- Register icon: this.iconRegistry.addSvgIcon('home', this.sanitizer.bypassSecurityTrustResourceUrl('assets/home.svg'))
- Use: <mat-icon svgIcon='home'></mat-icon>
- Icons are loaded via HttpClient and cached
Frequently Asked Questions
Why doesn't [fill]='color' work on SVG in Angular?
SVG attributes need the attr. prefix in Angular binding: [attr.fill]='color'. Regular property binding works for HTML DOM properties, but SVG uses XML attributes.
How do I use SVG icons in Angular without a library?
Create a shared SvgIconComponent. It takes a name input, loads the SVG from assets using HttpClient, sanitizes the HTML, and renders with innerHTML.
Can I use SVG animations in Angular?
Yes. SVG CSS animations work as-is. For Angular-specific animations, use Angular's AnimationBuilder to trigger CSS class changes that start/stop SVG animations.
How do I lazy-load SVG icons in Angular?
Load SVGs on demand using HttpClient. Cache responses in a Map. The Angular Material MatIconRegistry approach implements this pattern effectively.
What's the best way to tree-shake SVG icons in Angular?
Import only the SVG paths you need as string constants (not full files). Build a custom icon registry that only loads requested icons.
Related guides
Ready to Convert Your Image to SVG?
Free online converter — no sign-up, no watermarks, results in under 3 seconds.
Convert Image to SVG — Free