Error when retrieving icon from registry in server side rendering
See original GitHub issueBug, feature request, or proposal:
When we register some icons in MatIconRegistry
and access to them in SSR
, we have some errors and icons aren’t displayed.
What is the expected behavior?
Display icons and not have error in the console
What is the current behavior?
Icon aren’t displayed and we have error in the console
What are the steps to reproduce?
Create a component and register an icon in MatIconRegistry
:
import {Component, OnInit} from '@angular/core';
import {MatIconRegistry} from '@angular/material';
import {DomSanitizer} from '@angular/platform-browser';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit {
constructor(private _matIconRegistry: MatIconRegistry, private _domSanitizer: DomSanitizer) {
this._matIconRegistry.addSvgIcon('loader', this._domSanitizer.bypassSecurityTrustResourceUrl('assets/Icons/loader-default.svg'));
}
ngOnInit() {
}
}
@NgModule({
declarations: [
AppComponent
],
imports: [
// Make AppModule compatible with Universal
BrowserModule.withServerTransition({ appId: 'universal-app' }),
MatIconModule,
HttpClientModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {
}
Access to it in server side rendering
:
<mat-icon svgIcon="loader"></mat-icon>
In the console you’ll have this message:
Error retrieving icon:
ERROR [Error]
What is the use-case or motivation for changing an existing behavior?
MatIconRegistry
should work in SSR
Which versions of Angular, Material, OS, TypeScript, browsers are affected?
"dependencies": {
"@angular/animations": "^5.2.2",
"@angular/cdk": "^5.1.1",
"@angular/common": "^5.2.2",
"@angular/compiler": "^5.2.2",
"@angular/core": "^5.2.2",
"@angular/forms": "^5.2.2",
"@angular/http": "^5.2.2",
"@angular/material": "^5.1.1",
"@angular/platform-browser": "^5.2.2",
"@angular/platform-browser-dynamic": "^5.2.2",
"@angular/platform-server": "^5.2.2",
"@angular/router": "^5.2.2",
"@hapiness/config": "^1.1.1",
"@hapiness/core": "^1.3.0",
"@hapiness/ng-universal": "^5.2.2",
"@hapiness/ng-universal-transfer-http": "^5.2.2",
"@nguniversal/module-map-ngfactory-loader": "^5.0.0-beta.5",
"core-js": "^2.5.1",
"rxjs": "^5.5.6",
"zone.js": "^0.8.20"
},
"devDependencies": {
"@angular/cli": "^1.6.6",
"@angular/compiler-cli": "^5.2.2",
"@angular/language-service": "^5.2.2",
"@types/jasmine": "~2.8.3",
"@types/jasminewd2": "~2.0.2",
"@types/node": "^9.4.0",
"codelyzer": "^4.1.0",
"jasmine-core": "~2.8.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~2.0.0",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "^1.2.1",
"karma-jasmine": "~1.1.0",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "~5.1.2",
"ts-loader": "^3.3.1",
"ts-node": "^4.0.1",
"tslint": "^5.9.1",
"typescript": "^2.6.2"
}
Issue Analytics
- State:
- Created 6 years ago
- Reactions:23
- Comments:24
Top Results From Across the Web
Angular Material 2 - "Error retrieving icon: undefined"
Save this question. Show activity on this post. I am having a problem using a registered icon in Angular Material 2.
Read more >Known issues with PaperCut MF, NG, Hive, Pocket and ...
When using PaperCut NG/MF version 21.1.2 and the hidden document names feature in the print provider is enabled, print jobs sent for release...
Read more >Troubleshoot common problems | Fleet and Elastic Agent ...
This error occurs when you use self-signed certificates with Elasticsearch using IP as a Common Name (CN). With IP as a CN, Fleet...
Read more >Getting started with service workers - Angular
Installs icon files to support the installed Progressive Web App (PWA). Creates the service worker configuration file called ngsw-config.json , which ...
Read more >Troubleshooting - Unity - Manual
If your network can't reach the package registry server, it's probably because there is a connection problem with the network. When you or...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
For SSR, full URL is needed in order to retrieve svg icon. When encountered to this issue, I fixed it with something like this:
Facing same issue, with version 10.0.2 of @nguniversal/express-engine. @milosbr solution works indeed, however reading angular’s doc about absolute urls, we shouldn’t have to do this, unless I’m missing something…