我正在用Angular 8开发一个Web应用程序。
我正在使用iframe来显示我们的Intranet页面之一。为了显示不同的站点,我创建了一个服务,其中包含当前源并具有更新该源的功能。
export class ViewService {
src: string;
constructor() {}
showLinkTarget(url: string) {
this.src = url;
}
}
iframe的src
属性绑定到服务的src
属性
<iframe [src]="viewService.src | safe"></iframe>
现在,我希望在iframe中导航后可以跳回到初始页面。但是,由于我会将服务的src
属性设置为与它已经完全相同的字符串,因此这不会触发iframe的重新加载。另外,由于该页面的来源不同,因此我目前无法查看iframe内容目前实际包含的网址。
我考虑过通过将源设置为空字符串来重置源
showLinkTarget(url: string) {
this.src = '';
this.src = url;
}
但这似乎也不会触发更新。
仅在将src
设置为空字符串后强制延迟(即使只是1毫秒),iframe之后也会重新加载。
showLinkTarget(url: string) {
(async () => {
this.src = '';
await this.delay(1);
this.src = url;
})();
}
delay(ms: number) {
return new Promise(resolve => setTimeout(resolve, ms));
}
这种方式行得通,但对我来说似乎有点不客气。有什么好的方法可以做到这一点吗?
将iframe设置为其他src
可以正常工作。