Javascript IONIC 2中inyected服务的实例类型
我想知道injected的服务在IONIC 2上是如何工作的。具体来说,我想知道如果一个服务在两个或多个控制器中使用,将存在多少实例 在过去,我问过一位同事,他告诉我离子2可以使用单态模式,但在我的测试中,我认为它不能 我有两个控制器,A和B;和一个服务SVC1。是这样的 控制器AJavascript IONIC 2中inyected服务的实例类型,javascript,angular,typescript,ionic2,Javascript,Angular,Typescript,Ionic2,我想知道injected的服务在IONIC 2上是如何工作的。具体来说,我想知道如果一个服务在两个或多个控制器中使用,将存在多少实例 在过去,我问过一位同事,他告诉我离子2可以使用单态模式,但在我的测试中,我认为它不能 我有两个控制器,A和B;和一个服务SVC1。是这样的 控制器A import { NavController, Platform } from 'ionic-angular'; import { PageB } from '../pageb/pageB'; import { SV
import { NavController, Platform } from 'ionic-angular';
import { PageB } from '../pageb/pageB';
import { SVC1 } from '../../providers/svc1';
@Component({
selector: 'page-a',
templateUrl: 'a.html',
providers: [SVC1]
})
export class PageA {
constructor(public navCtrl: NavController, platform: Platform, public svc: SVC1) {
}
onAddEventClicked(event): void {
this.navCtrl.push(PageB);
}
}
控制器B
import { NavController, Platform } from 'ionic-angular';
import { SVC1 } from '../../providers/svc1';
@Component({
selector: 'page-b',
templateUrl: 'b.html',
providers: [SVC1]
})
export class PageB {
constructor(public navCtrl: NavController, platform: Platform, public svc: SVC1) {
}
}
服务
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
@Injectable()
export class SVC1 {
constructor(public http: Http) {
console.log('creating another instance');
}
}
这很简单。PageA有一个按钮。单击它时,它将转到第b页。PageA和PageB使用相同的服务
如果此服务是单例服务,则“创建另一个实例”消息只会出现一次。但是它出现了两次
为什么会发生这种情况?IONIC是否使用单例模式输入服务参考?有没有办法让我的服务只有一个实例
非常感谢
PS:很抱歉我的英语不好,希望我能随着时间的推移有所提高。您已经为每个页面设置了服务提供商。这不是单一模式。当您需要仅可用于该组件的服务时,可使用此选项 对于单例模式,您可以在app.module.ts的NgModule中将其设置为提供程序
@NgModule({
declarations:[..]
imports:[..],
bootstrap:[IonicApp],
entryComponents:[...],
providers:[SVC1] //here
})
export class AppModule { }
然后将服务添加到所需组件的构造函数中。
Angular Official docs有关于依赖项注入的信息