Angular:使用服务来有条件地导入模块

时间:2018-04-25 16:07:54

标签: javascript angular typescript angularjs-scope

我有我用来加载模块列表的服务:

row.priceList = row.pricePurchase + (row.pricePurchase * row.markUp / 100);

然后在我的模块文件中,我想像这样使用它:

render() {
  const { isLoaded } = this.state;

  if (!isLoaded) {
    return <div>Loading..</div>;

  return (
    <div className="main-container">
      <div className="sub-list">
        <div>
          {this._buildCrimesList()}
        </div>
      </div>
    </div>
  )
}

当然这是错误的,因为我不需要直接访问我的服务

建议吗

2 个答案:

答案 0 :(得分:0)

您可以使用canLoad后卫和LazyLoading。您可以从canLoad

调用您的服务

答案 1 :(得分:0)

使用lazyLoading

实现这一目标
 export class LoadGuard implements CanLoad {
  constructor(private myService : MyService , private router: Router) {
 }
 canLoad(route: Route): boolean {

  if (this.myService.canBeLoaded()) {
       return true; 
 } else {
    return false;
 }  
} 


{
  path: 'test',
  loadChildren: 'app/test/test.module#TestModule',
  canLoad: [LoadGuard]
},