首页 > 解决方案 > 导入内部函数返回 ZoneAwarePromise

问题描述

导入内部函数返回 ZoneAwarePromise

下面是我使用的代码

page_types = [
  {
    name: 'anime',
    loadComponent: () => import('./anime/anime.component').then(c => c.AnimeComponent)
  }
];

getPageType(name){
  for (var i=0; i < this.page_types.length; i++) {
    if (this.page_types[i].name == name) {
      return this.page_types[i].loadComponent();
    }
  }
}

constructor(
   console.log(this.getPageType('anime'));
){}

控制台中的响应

ZoneAwarePromise {__zone_symbol__state: null, __zone_symbol__value: Array(0)}

我希望输出是组件类

标签: angularlazy-loading

解决方案


import('./anime/anime.component')是一个异步操作,这就是为什么loadComponent函数返回一个Promise,反过来getPageType(name)也返回一个 Promise。所以预计控制台日志中会有ZoneAwarePromise {__zone_symbol__state: null, __zone_symbol__value: Array(0)}

如果你想要控制台日志中的组件类,你应该处理返回的 Promise。

  constructor() { 
    this.getPageType('anime').then(x => {
      console.log(x.name);
    })
  }

推荐阅读