我已经在Angular 4中创建了模块。我也使用@Injectable创建了服务,并将其添加到模块中。现在我的要求是,在模块加载期间不应加载服务。一旦我执行了诸如单击之类的操作或事件,则应该加载服务。因此,请帮助我如何实现此要求。
谢谢, 纳西p
答案 0 :(得分:1)
您必须显式使用注入器。注入器是实例化服务的注入器。
假设正方形是服务
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);
答案 1 :(得分:0)
如果您使用的是Angular 6,则angular本身提供了一项功能,可以使用其新语法来延迟加载服务。
@Injectable({
providdedIn : 'root'
})
使用这种方法,可以在后台按角度延迟加载服务,这将删除冗余代码,并提高性能和速度。