大佬教程收集整理的这篇文章主要介绍了AngularJs 2 – 创建多个服务实例,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Stateservice类:
@Injectable () class Stateservice { public log : String; static count : number = 0; constructor () { this.log = ''; Stateservice.count++; this.writeToLog ('CREATED '+Stateservice.count+' at ' + new Date().toString()); } public writeToLog (text : String) : void { this.log += text + '\n'; } }
零件 :
@Component ({ SELEctor : 'Sub-Component',template : `<hr> This is the Sub-Component ! <BR> Stateservice Log : <pre>{{ _stateservice.log }}</pre> <button (click)="WriteToLog ()">Write to log</button> `,providers : [Stateservice] }) export class SubComponent { constructor (private _stateservice : StateservicE) { } public WriteToLog () : void { this._stateservice.writeToLog ('From Sub-Component - This is '+new Date().toString()); } }
除了服务创建一次,当每个组件调用WriteToLog方法时,输出在每个组件中是相同的,但不是。
子组件可以输出:
所以看起来服务的2个实例被创建(实例1的实例2)
我只想要一个实例;),当我在日志中追加字符串时,这必须出现在两个组件中。
感谢您的帮助
@NgModule({ providers: [...],...
(由于延迟加载的模块引入自己的范围,因此不会加载的模块)
@Component ({ SELEctor : 'Sub-Component',// providers : [Stateservice] <== remove })
角度≤2.0.0-RC.5
如果将其添加到组件上,则为每个组件实例获取一个新的服务实例。而是添加到
bootstrap(AppComponent,[Stateservice]);
您可以通过将其添加到单个组件来进行更细致的控制,然后此组件和所有子项都会注入相同的实例,但是其他应用程序可以与由bootstrap()创建的实例配合使用。这是角度DI中的“等级”。
也可以看看
– http://blog.thoughtram.io/angular/2015/05/18/dependency-injection-in-angular-2.html
– http://blog.thoughtram.io/angular/2015/09/17/resolve-service-dependencies-in-angular-2.html
以上是大佬教程为你收集整理的AngularJs 2 – 创建多个服务实例全部内容,希望文章能够帮你解决AngularJs 2 – 创建多个服务实例所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。