关注此主题: InvalidPipeArgument: '' for pipe 'AsyncPipe'
我试图理解为什么在使用浏览器的“刷新”按钮刷新页面时,屏幕上没有填充/反映Observable列表。 使用“刷新”按钮表单控件并调用相同的代码时,它可以正常工作。
是否因为Observable数组正在填充而不是立即填充?与此同时,html在列表空白时循环?
当我打印到控制台的响应时,我可以看到数组确实包含实际结果(但仍未在屏幕上显示):
callGetResources() {
if (this.route.outlet === Constants.APP_USER) {
// When refreshing the page, user is still not populated
this.resourcesService.getUser()
.subscribe( data => {
this.resources = this.resourcesService.getResources(data.text());
//this.resourcesService.getResources(data.text()).subscribe( response => {
//console.log(response);//});
});
还有一件事,如果它有所不同,我会使用不同的标签和不同的标签!
constructor(private service: ResourcesService, private router: Router) {
this.router.navigate([{ outlets: { ['appUser'] : ['resources-list'] } }]);
}
答案 0 :(得分:0)
我可以看到this.resourcesService.getResources(data.text())
返回一个observable。如果您想在模板中显示来自此可观察对象的数据,或者在本地变量中保存来自observable的数据,并在模板中显示此变量(对不起我的英文)
您也可以使用mergeMap而不是嵌套订阅。
async
并在模板中使用callGetResources() {
if (this.route.outlet === Constants.APP_USER) {
this.resources = this.resourcesService.getUser()
.pipe(
mergeMap(data => this.resourcesService.getResources(data.text())
)
或使用局部变量
resources | async