2017-09-14 6 views
1

こんにちは私は、再利用可能な関数を構築するためにトリヤンを使用していますが、何らかのコンテンツをサニタイズしていますが、DomSanitizerというコールを呼び出すことはできません。ここ は私の関数である。それを使用する関数内でのDomSanitizerの使用方法

export function PostFormat(post){ 
    let sanitizer: DomSanitizer; // TODO! 

    post['title'] = sanitizer.bypassSecurityTrustHtml(post['title']['rendered']); 
    post['author'] = post['_embedded']['author'][0]; 
    post['content'] = sanitizer.bypassSecurityTrustHtml(post['content']['rendered']); 
    post['excerpt'] = sanitizer.bypassSecurityTrustHtml(post['excerpt']['rendered']); 

    if (post['_embedded']['wp:featuredmedia']){ 
    if (post['_embedded']['wp:featuredmedia'][0]['media_details']){ 
     post['featured_image'] = post['_embedded']['wp:featuredmedia'][0]['media_details']['sizes'][this.default_size]['source_url']; 
    } 
    } 
    if (post['_embedded']['replies']){ 
    post['comments'] = post['_embedded']['replies'][0]; 
    } 
    return post; 
} 
+2

サービスクラスで関数をラップするだけで、簡単に 'DomSanitizer'を注入できます。 Angularと対戦しようとしないで、それははるかに楽しいでしょう。 –

+1

haha​​ha @GünterZöchbauerヒントのおかげで – efirvida

答えて

1

簡単な方法は、あなたが消毒剤

func trueHTML(post) { 
    return this.sanitizer.bypassSecurityTrustHtml(
    post.replace(
     regex, 
     match => `<a target="_blank" href="${match}">${match}</a>` 
    ) 
); 
} 

のすべてのfuncsを使用してinner htmlのようにテキストを追加することができ、その後、インポート

import { DomSanitizer } from '@angular/platform-browser'; 

を追加することです

<div [innerHtml]="post"></div> 
関連する問題