角度服务的延迟加载

时间:2018-06-21 02:57:15

标签: angular angular2-routing angular4-router

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

谢谢, 纳西p

2 个答案:

答案 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'
})

使用这种方法,可以在后台按角度延迟加载服务,这将删除冗余代码,并提高性能和速度。