-------------------编辑----------------------
我缩小了问题,这似乎是domSanitizer中的一个问题。我创建了2个<embed>
标签 - 一个带有硬编码路径,另一个带有domSanitizer输出。第一个完美运作,第二个没有做任何事情:
//working
<embed src="THE_HARD_CODED_URL" width="800" height="512" type="application/x-shockwave-flash"/>
//not working
<embed [src]="safeUrl" width="800" height="512" type="application/x-shockwave-flash"/>
我正在开发一个angular2网站,需要嵌入Flash游戏。
问题是,当我导航到游戏的视图时,我看不到<embed>
点的游戏。如果我从游戏页面强制刷新网站 - 我会在那里看到一些快速的东西(我认为这是在加载游戏之前来自adobe的初始消息)然后它就会消失。
以下是代码示例 - 我在“游戏列表”组件中有一个游戏列表,因此如果您点击一个游戏,您将被路由到此特定游戏的视图:
//game-list.component.html
<a [routerLink]="['/game', game.id]">
<img [src]="game.preview.thumbnailPath" />
</a>
路线通向“游戏”组件,如下所示:
//game.component.html
<h1>{{game.name}}</h1>
<embed [src]="safeUrl" width="800" height="512" type="application/x-shockwave-flash"/>
safeUrl
是DOM Sanitizer的输出
//game.component.ts
this.safeUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(this.game.embedUrl);
毋庸置疑,我检查了所有数据是否正确传递给“游戏”组件 - 我打印了safeUrl
并获得了所需的链接。
我对角度很新,所以也许我错过了一个基本的东西,但我没有看到它。
谢谢!