मैं आयनिक 3 का उपयोग करके एक कोणीय 4 को आलसी लोड करता हूं और मुद्दों को नहीं लेता। यह सिंगलटन सुनिश्चित करें कि आपके एप्लिकेशन मॉड्यूल सेवा प्रदान कर बनाने के लिए। और @Component पर प्रदाताओं कि सेवा का उपयोग को हटा दें।
अनुप्रयोग मॉड्यूल
@NgModule({
...
providers: [
StatusBar,
SplashScreen,
{ provide: ErrorHandler, useClass: IonicErrorHandler },
Singleton // the service or provider to be single ton
]
})
export class AppModule { }
सेवा
import { Injectable } from '@angular/core';
import 'rxjs/add/operator/map';
@Injectable()
export class Singleton {
data = "init data";
constructor() {
console.log('Hello Singleton Provider');
}
set(data){
this.data = data;
}
log(){
console.log(this.data);
}
}
Tes प्रकरण आयनिक पृष्ठ पर सेवा
प्रथम पृष्ठ
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { Singleton } from '../../providers/singleton';
@IonicPage()
@Component({
selector: 'page-first',
templateUrl: 'first.html'
})
export class FirstPage {
constructor(public navCtrl: NavController, public navParams:
NavParams,private single:Singleton) {
}
ionViewDidLoad() {
console.log('ionViewDidLoad First');
this.single.log(); // log init data;
this.single.set("First singleton data");
}
}
दूसरा पृष्ठ
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { Singleton } from '../../providers/singleton';
@IonicPage()
@Component({
selector: 'page-second',
templateUrl: 'second.html'
})
export class SecondPage {
constructor(public navCtrl: NavController, public navParams:
NavParams,private single:Singleton) {
}
ionViewDidLoad() {
console.log('ionViewDidLoad Second');
this.single.log(); // log First singleton data
}
}
तीसरा पृष्ठ यह नया उदाहरण बनाने यदि प्रदाताओं घटक पर जोड़ा
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { Singleton } from '../../providers/singleton';
@IonicPage()
@Component({
selector: 'page-second',
templateUrl: 'second.html',
providers:[Singleton] // wrong because its create a new instance
})
export class ThirdPage {
constructor(public navCtrl: NavController, public navParams:
NavParams,private single:Singleton) {
}
ionViewDidLoad() {
console.log('ionViewDidLoad ThirdPage');
this.single.log(); // log init data
}
}
यह सिंगलटन बनाने के लिए घटक पर प्रदाताओं को हटाना न भूलें ।
मैंने एक परियोजना में समान आयात और इंजेक्टर का उपयोग किया और पुन: पेश करने में असमर्थ था। आयनिक v3.1.2, कोणीय 4.1.0 – Nelson
यह बहुत अजीब व्यवहार है जिसका आप वर्णन कर रहे हैं। कोणीय 2 से कोणीय 4 तक एक वेब ऐप को अपग्रेड करते समय मुझे इस तरह के कोई बदलाव नहीं दिखाई दिए। –
मुझे वास्तव में यह जानने की जरूरत है कि इस समस्या को हल करने के लिए कैसे करें –