刷新页面时不会填充可观察列表

时间:2018-06-10 18:03:28

标签: angular observable

关注此主题: 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'] } }]);
}

1 个答案:

答案 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