延迟加载角度服务

问题描述 投票:1回答:2

我在Angular 4中创建了模块。我也使用@Injectable创建了服务,添加到模块中。现在我的要求是,在模块加载期间不应加载服务。一旦我执行像点击这样的动作或事件,那么应该加载服务。所以请帮助我如何实现这个要求。

谢谢,Narsi p

angular angular2-routing angular4-router
2个回答
1
投票

您必须明确使用注射器。注入器是实例化服务的注入器。

假设square是服务,

class Square { name = 'square'; } 

使用以下代码调用组件中的服务。

const injector = Injector.create({providers: [{provide: Square, deps: []}]}); 
const shape: Square = injector.get(Square);
expect(shape.name).toEqual('square');
expect(shape instanceof Square).toBe(true);

0
投票

如果您正在使用Angular 6,则角度本身通过使用它的新语法为延迟加载服务提供了一个功能。

@Injectable({
   providdedIn : 'root'
})

使用这种方式可以在场景后面以角度加载服务,这将删除冗余代码并带来更好的性能和速度。

© www.soinside.com 2019 - 2024. All rights reserved.