2017-10-09 11 views
1

In this Plunk, Angular.io 자습서를 약간 수정했습니다.각도 서비스는 참조되었지만 호출되지 않았지만 정확한 값을 반환합니다.

저는 heroes.service에 doHeroesExist이라는 기능을 추가했습니다. 그러나 나는 결코 그것을 부르지 않는다. 내가 할 수있는 유일한 것은 app.component

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

에 변수에 할당 그리고 여기 hero.service.ts 파일 내부의 doHeroesExist 기능입니다.

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

나는 당황합니다.

왜 콘솔 로그에 ()이라고 표시 되나요? 함수의 본문을 문자열로 출력하면 안됩니까? doHeroesExist 내부의 console.log도 인쇄되지 않습니다.

답변

1

편집 :

당신은 당신이 당신의 서비스에 정의 된 것이 있다고 언급하는 것을 잊었다 :

doHeroesExist: boolean; 

    constructor() { 
    this.doHeroesExist = true; 
    } 

좋은 생각을 같은 이름의 멤버 메소드와 멤버 필드를 가지고 ...

doHeroesExist의 정의가 무엇이든 (함수, 다른 변수 ...), 생성자에 방금 값 true을 할당합니다. 값이 trueboolean이됩니다.

그게 전부입니다. 이름 충돌로 인해 컴파일 된 것이 놀랍지 만, 어떤 경우에는 생성자가 동작을 분명히합니다.

+0

유용한 답변과 문제를 지적 해 주셔서 감사합니다. 나는 내가 실제로 내 질문에 괴롭힘을 당했다는 것을 알았다. 몇 가지 사항을 변경하고 여기에서 다시 요청했습니다. https://stackoverflow.com/questions/46657227/angular-giving-a-component-field-a-reference-to-a-service-function-and-calling – CodyBugstein