我试图使用属性绑定在Angular中动态绑定一个embed标记的src属性,但它没有按预期的方式工作.

以下是我try 过的: 在我的TypeScript文件中,我声明了一个属性来保存源URL:

export class MyComponent {
 embedSource: string = 'pathtofile.pdf';
}

在我的模板文件(component.html)中,

<embed [src]="embedSource" type="application/pdf" width="100%" height="600px">

但是,PDF文件没有加载到embed标签中.我已经仔细判断了embedSource的值,它包含指向PDF文件的正确URL路径. 有人能帮我弄清楚是什么导致了这个问题吗?

推荐答案

PDF不会在stackblitz中呈现,但下面的示例代码可能会帮助您实现所需的内容.我们需要使用DomSanitizer方法bypassSecurityTrustResourceUrl这样angular将信任URL并加载资源!

import { Component } from '@angular/core';
import {
  DomSanitizer,
  SafeUrl,
  bootstrapApplication,
} from '@angular/platform-browser';
import 'zone.js';

@Component({
  selector: 'app-root',
  standalone: true,
  template: `
    <embed [src]="embedSource" type="application/pdf" width="100%" height="600px">
  `,
})
export class App {
  embedSource: SafeUrl = '';

  constructor(private sanitizer: DomSanitizer) {
    this.embedSource =
      this.sanitizer.bypassSecurityTrustResourceUrl('assets/dummy.pdf');
  }
}

bootstrapApplication(App);

Stackblitz Demo

Angular相关问答推荐

PrimeNG侧栏清除primeNG消息.为什么?

Angular 17自定义指令渲染不起作用'

以Angular 将指令事件从子组件传递到父组件

[已解决]如何在模块ngDoBootstrap中测试Angular 自定义元素和做覆盖

判断哪个Angular 信号导致了影响

类是一个独立的组件,不能在Angular中的`@NgModule.bootstrap`数组中使用

Angular 单调服务已多次创建

Primeng:安装ANGLE 16.2.0版本

Angular CLI 与 Angular 版本不兼容

VS 2022 停留在运行 Angular 应用程序上

我的验证器收到一个始终为空的可观察值

Angular:如何在根组件中使用 ngx-translate?

找不到模块'@angular/compiler'

MatToolbar 与 Angular 9 一起使用时抛出错误

得到了预期表达式的插值 ({{}})

Angular 2 Material 2 日期 Select 器日期格式

RxJS:takeUntil() Angular 组件的 ngOnDestroy()

Angular 4 错误:没有 HttpClient 的provider提供者

Firestore 从集合中获取文档 ID

在 Angular 2 中使用逗号作为列表分隔符