2017-04-06 44 views
1

我正在通過html對象標記將pdf加載到視圖中。出於某種原因,任何時候在dom中的任何其他地方發生angular2動作(mouseenter,mouseout,click)都會導致對象/ pdf重新加載。我注意到internalInstanceId不斷改變對象標籤,但我無法控制。當angular2動作發生時,HTML對象標記重新加載

<object type="application/pdf" width="100%" height="100%" [data]="cleanUrl(item.url)" id="pdf_content"></object> 

這是一個顯示正在發生什麼的plunkr。當一個角度事件發生時(鼠標懸停在標題之外),它會導致對象標籤重新加載。

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

+1

您必須發佈更多相關的代碼,以便我們提供幫助。你可以試着在plnkr.co –

+0

上覆制這個問題得到一個plunkr與我在談論的 – jredd

+0

剛剛碰到這個問題,花了我很長時間來注意internalinstanceid增加,每當有一個鼠標懸停 – Joe

回答

1

這真的很有趣,弄明白,事件綁定:mouseentermouseleave觸發一個變化檢測DoCheck,由於某種原因導致消毒劑來觸發或者是其它東西,不知道。

在任何情況下,我固定它通過移動消毒到管道:

@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

相關問題