Angular服务的懒加载

4
我已在Angular 4中创建了模块。我还使用@Injectable创建了服务,并将其添加到了模块中。现在我的要求是,服务不应在模块加载期间加载。只有当我执行某个操作或事件(例如单击)时,服务才应该加载。请帮助我如何实现这个要求。
谢谢, Narsi p
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);

Injector 类中不存在 create 方法。Injector.create 抛出错误。 - narsi

1
如果您正在使用Angular 6,则Angular本身提供了一种使用其新语法来惰性加载服务的功能。
@Injectable({
   providdedIn : 'root'
})

使用这种方式,Angular可以在后台懒加载服务,这将删除冗余代码并提高性能和速度。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接