Подтвердить что ты не робот

Что такое viewproviders в Angular? И в чем разница между провайдерами b/w и viewproviders?

Что такое viewProviders в приведенном ниже коде? И как он отличается от поставщиков?

class Greeter {
   greet(name:string) {
     return 'Hello ' + name + '!';
   }
}    
@Component({
  selector: 'greet',
  viewProviders: [
    Greeter
  ],
  template: `<needs-greeter></needs-greeter>`    
})
class HelloWorld {
}
4b9b3361

Ответ 1

В вашем примере нет разницы между поставщиками и viewProviders, потому что шаблон HelloWorld не использует <ng-content>. Если вы проецировали содержимое в <ng-content>...</ng-content>, тогда Greeting не мог быть введен в проецируемый контент, потому что вы используете

viewProviders: [Greeter] 

Если вы хотите, чтобы Greeter мог быть добавлен в проецируемый контент, вы должны использовать

providers: [Greeter]

Итак, viewProviders ограничивает поставщика дочерними элементами, отличными от проецируемого контента, а providers позволяет всем детям использовать поставщика. Значением является то, что viewProviders позволяет предотвратить проецирование проецируемого контента на ваши сервисы, что может быть особенно полезно в библиотеках.