如何使用angular2 rc.6在显示pdf的embed html标签上禁用sanitize

时间:2016-09-08 14:20:51

标签: angular

我真的不明白我在这里做错了什么:

模板:

<embed [src]="pdfUrl" width="500" height="100%" type='application/pdf'>

类别:

pdfURL;
constructor(private domSanitizer : DomSanitizer) {}
ngOnInit() {
    this.pdfUrl = this.domSanitizer.bypassSecurityTrustUrl('http://example.com/pdf.pdf')
}

这实际上并未加载<embed>,但不会引发错误。

我在SafeUrlpdfURL上使用bypassSecurityTrustResourceUrl()类型进行了尝试。 <embed>标记会收到正确的网址,但不会显示任何内容。

3 个答案:

答案 0 :(得分:7)

我认为它应该是:

import com.fasterxml.jackson.databind.ObjectMapper;

:

@Autowired
private ObjectMapper objectMapper;

@RestController
public class SampleController {

    @RequestMapping(value = "/jsonInfo", method = RequestMethod.GET, produces = APPLICATION_JSON_VALUE)
    public JsonNode jsonInfo()  throws JsonProcessingException, IOException {
        String string = "{\"name\": \"foo\"}"
                return objectMapper.readTree(string);
    }
}

并使用它:

this.pdfUrl = this.domSanitizer.bypassSecurityTrustResourceUrl('url')

参见 Plunkr

更新(Chrome中存在<iframe [src]="pdfUrl" width="500" height="600" type='application/pdf'></iframe> 标记的错误

对于embed代码,您可以通过embed重新注入嵌入代码:

outerHTML

对于此案例,请参阅 plunker

答案 1 :(得分:0)

首先感谢你,但我不明白我有完全一样的看到结果

我的嵌入不显示...我没有css隐藏它:

我认为这是因为我没有重新注入嵌入标签?当我打开sidenav时,我的嵌入已经存在,我只是更改了src网址并且它没有实现内容,是否有解决方案?

enter image description here

答案 2 :(得分:0)

但是在这里你可以看到 FIREFOX 它可以正常工作:

FIREFOX !!!