我有一个非常简单的AnimationComponent,其唯一的任务是显示一个.swf文件,作为输入提供。 HTML模板如下:
<embed [src]="url" width="400" height="300" />
组件代码如下:
import { Component, Input, OnInit } from '@angular/core';
import { DomSanitizer, SafeResourceUrl, SafeUrl } from '@angular/platform-browser';
@Component({
selector: 'animation',
templateUrl: './animation.component.html'
})
export class AnimationComponent implements OnInit {
@Input()
private code: string = '';
private url: SafeResourceUrl;
constructor(private sanitizer: DomSanitizer) { }
ngOnInit() {
let url = `/assets/SWF/${this.code}`;
this.url = this.sanitizer.bypassSecurityTrustResourceUrl(url);
}
}
当输入参数代码设置为&#34; Blob.swf时,浏览器中生成的代码如下:
<embed height="300" width="400" src="/assets/SWF/Blob.swf">
但是会显示一个空框,不存在动画。但这就是它变得奇怪的地方。如果我将HTML模板更改为:
<embed height="300" width="400" src="/assets/SWF/Blob.swf">
精明的读者将会看到的与最初生成的代码完全相同,动画显示的完全符合预期。
任何人都可以想到为什么生成的代码完全按照预期的方式无法工作,但是当src被硬编码时它可以工作吗?