2017-10-09 10 views
1

In this Plunk, j'ai apporté une modification mineure au tutoriel Angular.io.Le service angulaire est référencé mais pas appelé, mais "renvoie" toujours la valeur correcte

J'ai ajouté une fonction au service heroes.service appelé doHeroesExist. Cependant, je ne l'appelle jamais. La seule chose que je fais l'assigner à une variable dans le app.component

ngOnInit(): void { 
    //this.getHeroes(); 
    this.heroesExist = this.heroService.doHeroesExist; 
    console.log("app ngOnInit called...", this.heroesExist); // outputs: app ngOnInit called... true 
    } 

Et est la fonction doHeroesExist ici à l'intérieur du fichier hero.service.ts.

doHeroesExist(): boolean { 
    console.log("doHeroesExist called..", this.doHeroesExist); 
    return this.doHeroesExist; 
    } 

Je suis perplexe.

Pourquoi dit-on vrai dans le journal de la console? Ne devrait-il pas sortir le corps de la fonction sous forme de chaîne? De plus, le fichier console.log à l'intérieur du doHeroesExist n'est jamais imprimé - preuve supplémentaire qu'il n'est pas appelé!

Répondre

1

EDIT:

Vous avez oublié de mentionner que vous aviez que défini dans votre service:

doHeroesExist: boolean; 

    constructor() { 
    this.doHeroesExist = true; 
    } 

pas une bonne idée d'avoir une méthode de membre et un champ de membre du même nom ... Quelle que soit la définition de doHeroesExist était (fonction, autre variable ...), dans votre constructeur, vous lui attribuez la valeur true. Donc, il devient un boolean avec la valeur true.

C'est tout. Je suis surpris qu'il compile en raison du conflit de nom, mais en tout cas le comportement est clairement causé par votre constructeur.

+0

Merci pour votre réponse utile et en soulignant ces problèmes. Je réalise maintenant que j'ai raté ma question. J'ai apporté quelques modifications et je l'ai de nouveau demandé ici: https://stackoverflow.com/questions/46657227/angular-giving-a-component-field-a-reference-to-a-service-function-and-calling – CodyBugstein