2016-11-08 6 views
1

После углового 2 учебника @https://angular.io/docs/ts/latest/tutorial/toh-pt4.htmlПровайдеры

В

@Component({ 
}) 

я вставленной "providers: [HeroService]", который содержит метод getHeroes().

создал конструктор:

constructor(private heroService: HeroService) {} 

Теперь часть я не понимаю, как я могу использовать

this.heroService.getHeroes()

Единственные propertes, определенные в этом классе являются:

title = 'Tour of Heroes'; 
heroes: Hero[]; 
selectedHero: Hero; 

Содержит ли провайдеры в декораторе @Component свойство для доступа к нему через this.?

Приложение работает, просто не знаю, как мы волшебным образом смогли получить доступ к heroService через this.

ответ

1

private (также может быть public) в

constructor(private heroService: HeroService) {} 

также создает свойство heroService и присваивает значение, переданное конструктору. Это функция TypeScript и не зависит от Angular2 или DI.

+0

Интересно, поэтому, если оставить его пустым, оно по умолчанию будет общедоступным, но не создаст свойство, но тот факт, что вы объявите его как закрытый или общедоступный, скажет классу создать свойство. Полезно знать. Я не могу обернуть голову вокруг _why_, этот синтаксис должен иметь какое-либо отношение к созданию свойства. Это потому, что, определяя его как личное или публичное, означает, что вы подразумеваете, что он будет повторно использован? Извините, если этот вопрос не имеет смысла, я довольно новичок. Но в любом случае, спасибо за ответ. Очень хорошо знать;) –

+1

Очень часто назначаются параметры конструктора для свойств, поэтому они создали этот синтаксический шугар. Если вы опускаете 'private' и' public', свойство не создается, а 'heroService' существует только внутри конструктора. –