问题描述 投票:1回答:1

我试图通过在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的其他方法。

javascript angular
1个回答
0
投票

这可能不是最佳解决方案,但我创建了一个方法来完成此任务:

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的文件。

© www.soinside.com 2019 - 2024. All rights reserved.