首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在发生angular2操作时重新加载Html object标记

在发生angular2操作时重新加载Html object标记
EN

Stack Overflow用户
提问于 2017-04-07 03:16:28
回答 2查看 3.1K关注 0票数 3

我通过html object标签将一个pdf文件加载到视图中。由于某些原因,任何时候发生angular2操作(鼠标输入、鼠标输出、单击)都会导致对象/pdf重新加载。我注意到object标签上的internalInstanceId一直在变化,但我无法控制。

代码语言:javascript
复制
<object type="application/pdf" width="100%" height="100%" [data]="cleanUrl(item.url)" id="pdf_content"></object>

这是一个显示正在发生的事情的图。当一个角度事件发生时(鼠标移到标题上和标题外),它会导致对象标签重新加载。

https://plnkr.co/edit/sovRUOn79LTJRDhaellf?p=preview

EN

回答 2

Stack Overflow用户

发布于 2017-04-08 08:57:00

这真的很有趣,弄清楚事件绑定:mouseenter mouseleave触发一个变更检测DoCheck,由于某种原因,导致杀菌器触发,或者是其他原因,不确定。

在任何情况下,我都通过将清理移到管道中来修复它:

代码语言:javascript
复制
@Pipe({ name: 'safeUrl'})
export class SafeUrlPipe implements PipeTransform  {
  constructor(private sanitized: DomSanitizer) {}
  transform(value) {
    console.log(this.sanitized.bypassSecurityTrustHtml(value))
    return this.sanitized.bypassSecurityTrustResourceUrl(value);
  }
}

像这样使用它:<object [data]="cleanUrl(item.url) | safeUrl"></object>查看这个plnkr:https://plnkr.co/edit/10hzOzU31R7CgxJKQaYe?p=preview

这个github问题也可能是相关的:https://github.com/angular/angular/issues/7055

票数 5
EN

Stack Overflow用户

发布于 2020-08-11 16:17:38

此外,如果您的组件逻辑允许,您可以使用changeDetection: ChangeDetectionStrategy.OnPush来避免在每次更改时触发它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43263960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档