可能有类似的问题,但没有一个对我有帮助。我尝试使用我的 service.page.ts 从 firestore 获取 Url:
baustellenAbfrage(): Observable<Baustellen[]>{
return this.afStore.collection<Baustellen>(`Baustellen`).valueChanges();
}
这适用于所有字符串,但不适用于“url”。在 ts 文件中,我使用 ngOnInit
import { Component, OnInit, ElementRef, SecurityContext } from '@angular/core';
import { Baustellen } from '../baustellen/baustellen.interface';
import { BaustellenService } from '../baustellen/baustellen.service';
import { Observable } from 'rxjs';
import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';
import { Pipe, PipeTransform } from '@angular/core';
@Component({
selector: 'app-baustellen',
templateUrl: './baustellen.page.html',
styleUrls: ['./baustellen.page.scss'],
})
export class BaustellenPage implements PipeTransform, OnInit{
bstUrl: SafeResourceUrl;
public baustellen: Observable<Baustellen[]>;
constructor(
private baustellenService: BaustellenService,
private sanitizer: DomSanitizer) { }
ngOnInit() {
this.baustellen = this.baustellenService.baustellenAbfrage();
}
transform(bstUrl) {
return this.sanitizer.bypassSecurityTrustResourceUrl(bstUrl);
}
}
并通过以下方式获取我的信息:
*ngFor="let bst of baustellen | async"
在我的 HTML 上。
要获取 url 部分,我使用 iframe:
<iframe src="{{bst.bstUrl}}"
width="100%" height="150px" style="border:0;" allowfullscreen="" loading="lazy">
</iframe>
我知道我必须使用 DomSanitizer,但它不起作用,我不知道如何使用“bst.bstUrl”作为安全 URL。问题是,这必须是一个动态链接。
如何在我的 ngFor-Loop 中“集成” DomSanitizer?如您所见,在 baustellen.page.ts 我尝试使用 DomSanitizer 但这不起作用。我也使用管道
@Pipe({ name: 'safe' })
但后来我得到这个错误:错误错误:未捕获(承诺):ReferenceError:在初始化之前无法访问'BaustellenPageModule'ReferenceError:在Module.BaustellenPageModule初始化之前无法访问'BaustellenPageModule'(baustellen-baustellen-module.js:10398)