Angular2 setinterval
Je utiliser setInterval dans angular2 mais il ne faut pas travailler s'il vous plaît aider. Si j'appelle une fonction pour afficher les erreurs. Je veux mettre à jour les données de la page à l'ajax et j'ai utiliser setinterval
export class AppComponent{
objMonitoring: Monitoring = new Monitoring();
arrMonitoring: Monitoring[]=[];
constructor(private httpService: HttpService){}
public sampleMethodCall() {
setInterval(function() {
this.ngOnInit(); },4000);
}
ngOnInit(){
this.httpService.getData().subscribe((data: Response) => {
let monitoringList = data.json();
this.arrMonitoring = [];
for(let index in monitoringList){
this.arrMonitoring.push(monitoringList[index]);
}
});
}
Dans le modèle que j'appel la fonction de ce code
<button (click)="sampleMethodCall()">click</button>
Vous devez vous connecter pour publier un commentaire.
Vous avez un
ngOnInit
méthode, mais votre classe n'est pas de la mettre en œuvre (il n'est pas nécessaire, mais utile).Votre classe doit ressembler à:
Également votre
this
à l'intérieur de lasetInterval
de rappel n'est pas fait référence à votre page. Utiliser une graisse flèche pour résoudre ce problème.Aussi je ne comprenais vraiment pas pourquoi vous appelez
ngOnInit
comme ça. C'est un cycle de vie de crochet. L'objectif est de courir après laconstructor
sans l'appeler. C'est pourquoi vous devez la mettre en œuvre dans votre classe.Fondamentalement une différence entre la fonction anonyme et de la flèche en fonction de la flèche de la fonction maintient vivante la référence de cela, donc si vous souhaitez utiliser
this.ngOnInit()
vous devez utiliser la flèche de la fonction comme suit:La suppression de votre code de ngoninit() et mettre ce code par la création d'une nouvelle fonction et d'appeler cette fonction dans le constructeur.
essayer de code ci-dessous si setinterval n'est pas de travail
setInterval(() => ce.Nomfonction(); },4000);
Est peut-être mieux vous observer à faire poolings. J'ai quelques problèmes avec l'intervalle réglé. Avec Observables, vous pouvez arrêter de mise en commun si vous le souhaitez. Voir le code:
}
Vous pouvez faire de même avec les changements suivants :
Vous pouvez également utiliser RxJS intervalle au lieu de
setInterval
méthode.setInterval
this
variable n'est pas fait référence à la composante c'est la raison angulaire 2RxJs interval
préféré sursetInterval
let that = this
truc est inutile (ils font la même chose). Utiliser seulement 1 d'entre eux.