我试图通过在index.html中创建<link>
标签来更新我的角度2应用程序中的应用程序图标:
<head>
<base href="/" />
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link id="appFavicon" rel="icon" type="image/png" href="assets/images/teal.png"></link>
</head>
但是,转换后的DOM没有我的link
标签。它删除了<link>
行。
这会导致错误:
core.es5.js:1084 ERROR TypeError: Cannot read property 'setAttribute' of null
当我尝试更新时,应用程序中的favicon做类似的事情:
this._document.getElementById('appFavicon').setAttribute('href', 'assets/images/red.png');
我的组件构造函数有:
@Inject(DOCUMENT) private _document: any)
我也试过使用封闭和非封闭的链接标签:
<link id="appFavicon" rel="icon" type="image/png" href="assets/images/teal.png">
和
<link id="appFavicon" rel="icon" type="image/png" href="assets/images/teal.png"/>
我也尝试在onInit
方法中创建一个link元素,并且也没有添加到DOM中。
请建议如何将<link>
添加到DOM,或者更新favicon的其他方法。
这可能不是最佳解决方案,但我创建了一个方法来完成此任务:
private updateFavicon(pathToIcon: string) {
let link: any = this._document.getElementById('appFavicon') || this._document.createElement('link');
link.type = 'image/png';
link.rel = 'icon';
link.href = pathToIcon;
link.id = 'appFavicon';
document.getElementsByTagName('head')[0].appendChild(link);
}
我只是将相关路径传递给要更新为favicon的文件。