Angular 角度服务的延迟加载

Angular 角度服务的延迟加载,angular,angular2-routing,angular4-router,Angular,Angular2 Routing,Angular4 Router,我在Angular 4中创建了模块。我还使用@Injectable创建了服务,并将其添加到模块中。现在我的要求是,在模块加载期间不应加载服务。一旦我执行了像单击这样的操作或事件,服务就应该加载。因此,请帮助我如何实现这一要求 谢谢, Narsi p您必须明确使用注入器。注入器是实例化服务的注入器 假设广场是服务区 class Square { name = 'square'; } 使用以下代码调用组件中的服务 const injector = Injector.create({provide

我在Angular 4中创建了模块。我还使用@Injectable创建了服务,并将其添加到模块中。现在我的要求是,在模块加载期间不应加载服务。一旦我执行了像单击这样的操作或事件,服务就应该加载。因此,请帮助我如何实现这一要求

谢谢,
Narsi p

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

假设广场是服务区

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

如果您使用的是Angular 6,那么Angular本身通过使用其新语法为延迟加载服务提供了一个特性

@Injectable({
   providdedIn : 'root'
})

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

create方法在Injector类中不存在。创建抛出错误。