20

Tôi đang cố gắng sử dụng DomSanitizer để khử trùng một URL động trong một Thành phần bằng cách sử dụng Tôi không thể tìm ra cách chính xác để chỉ định Nhà cung cấp cho dịch vụ này.Cách chính xác Cung cấp DomSanitizer thành Component với Angular 2 RC6

Tôi đang sử dụng Angular 2.0.0-rc.6

Dưới đây là thành phần hiện tại của tôi:

@Component({ 
    templateUrl: './app.component.html', 
    styleUrls: [ './app.component.css' ], 
    providers: [ DomSanitizer ], 
}) 
export class AppComponent implements OnInit 
{ 
    public url: SafeResourceUrl; 

    constructor(private sanitizer: DomSanitizer) {} 

    ngOnInit() { 
     let id = 'an-id-goes-here'; 
     let url = `https://www.youtube.com/embed/${id}`; 

     this.videoUrl = this.sanitizer.bypassSecurityTrustResourceUrl(url); 
    } 

    ngOnDestroy() {} 
} 

Điều này dẫn đến các lỗi this.sanitizer.bypassSecurityTrustResourceUrl is not a function khi chạy.

Ai đó có thể cho tôi xem ví dụ về cách cung cấp Nhà cung cấp cho DomSanitizer đúng cách không? Cảm ơn!

Trả lời

35

Bạn không cần phải khai báo providers: [ DomSanitizer ] nữa.
Chỉ cần importDomSanitizer như hình dưới đây,

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

trong thành phần bơm nó thông qua một constructor như dưới đây,

constructor(private sanitizer: DomSanitizer) {} 
+0

Đây là vấn đề của tôi. Tôi đã cố gắng sử dụng 'DomSanitizer' làm nhà cung cấp. Không có nhà cung cấp nào cả, nó hoạt động như một sự quyến rũ. Cảm ơn! – kalmas

+0

bạn được chào đón! – micronyks

1

Cả hai nên làm việc

constructor(private sanitizer: DomSanitizer) {} 
constructor(private sanitizer: Sanitizer) {} 

Tiêm DomSanitizer là tốt hơn bởi vì chỉ có loại hình này cung cấp các phương pháp cần thiết mà không cần đúc.

Đảm bảo bạn đã nhập BrowserModule

@NgModule({ 
    imports: [BrowserModule], 
}) 

Xem thêm In RC.1 some styles can't be added using binding syntax

+0

nó phải là 'chất khử trùng riêng: DomSanitizer' chỉ – micronyks

+0

Thực ra cả hai đều hoạt động cùng https://github.com/angular/angular/blob/979657989bab4fb93faf6a207d30760faa9bd696/modules/%40angular/platform-browser/src/browser.ts # L41 –

6

nhập these-

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

xác định variable-

trustedDashboardUrl : SafeUrl; 

Sử dụng nó trong constructor như this-

constructor(
    private sanitizer: DomSanitizer) {} 

thể chỉ định URL như this-

this.trustedDashboardUrl = 
         this.sanitizer.bypassSecurityTrustResourceUrl 
          ("URL"); 

Xem nếu điều này giúp.

Các vấn đề liên quan