我在Angular 4中创建了模块。我也使用@Injectable创建了服务,添加到模块中。现在我的要求是,在模块加载期间不应加载服务。一旦我执行像点击这样的动作或事件,那么应该加载服务。所以请帮助我如何实现这个要求。
谢谢,Narsi p
您必须明确使用注射器。注入器是实例化服务的注入器。
假设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);
如果您正在使用Angular 6,则角度本身通过使用它的新语法为延迟加载服务提供了一个功能。
@Injectable({
providdedIn : 'root'
})
使用这种方式可以在场景后面以角度加载服务,这将删除冗余代码并带来更好的性能和速度。