导入内部函数返回ZoneAwarePromise

时间:2019-07-02 06:30:07

标签: angular lazy-loading lazyload

函数内部导入返回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:空,__zone_symbol__value:   Array(0)}

我希望输出是组件类

1 个答案:

答案 0 :(得分:1)

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);
    })
  }