angular - 异步管道到 src 图像属性 - Angular 2+
问题描述
我对可观察和异步管道有问题。我在我的组件中输入了 Observable。在控制器中并在 ngOnInit 中订阅 observable 我得到有效值。问题出在模板中,我没有在模板上获得有效值。我想在图像 src 属性中有异步。
TvShowComponent(返回 Observable)
public getCoverLink(): Observable<string> {
return this.tvShowForm.get('cover').valueChanges.pipe(map((coverLink: string) => {
return coverLink;
}));
}
TvShowComponent 模板(使用嵌套组件)
<fp-cover-thumbnail [coverLink$]="getCoverLink()"></fp-cover-thumbnail>
CoverThumbnailComponent (with Input()) @Input() public coverLink$: Observable;
ngOnInit() {
this.coverLink$.subscribe(data => {
console.log(data); // works here
});
}
CoverThumbnailComponent 模板(但不适用于此处:()
<div class="cover-thumbnail-container">
<img #cover [src]="(coverLink$ | async)"> <!-- here not work -->
coverLink: {{ (coverLink$ | async) }} <!-- also here not work -->
</div>
解决方案
问题是这一行:
<fp-cover-thumbnail [coverLink$]="getCoverLink()"></fp-cover-thumbnail>
您正在传递一个返回Observable<string>
良好的方法,该方法在 Angular 中不起作用。
您需要创建一个Observable<string>
并将其分配给它。前任。
coverLink$: Observable<string>;
然后在ngOnInit
或任何你想调用该方法的地方。
this.coverLink$ = this.getCoverLink();
你的 html 然后变成<fp-cover-thumbnail [coverLink$]="coverLink$"></fp-cover-thumbnail>
或者,您不需要将 an 传递Observable
给您的子组件,您可以这样做<fp-cover-thumbnail [coverLink]="coverLink$ | async"></fp-cover-thumbnail>
,您Input()
的子组件现在可以只是一个字符串。
推荐阅读
- javascript - 如何将搜索词传递回 ajax 生成的 div?
- c# - 如何为 extentreport 4.0.3 版重命名生成的多个报告文件名?
- sql - 如何在另一个表的两个特定值之间插入缺失值,然后复制另一列的值
- tensorflow - 保存超参数以进行恢复和再训练的好方法是什么
- c# - 带有滚动条的图表区域
- java - 使用 RxJava 从 Cache 和其他 Flowable 用于 DataSource 的 Flowable
- vba - VBA调整表格大小以适应页面宽度
- r - 如何在 kmeans 聚类中提取变量重要性的方差分析表
- c# - 在 asp.net-core 中将模型的属性别名为不同的名称
- java - 将文件排序为自定义排序顺序