В собственности в Angular Сервис не работает - PullRequest
0 голосов
/ 17 июня 2020

Я изучаю Angular DI, но предоставленный пример (https://angular.io/guide/providers#providedin -and-ngmodules ) не работает. Кто-нибудь может помочь мне понять, вот ссылка на Stackblitz, над которым я работаю . https://stackblitz.com/edit/angular-ivy-k1gvth Спасибо, Кешав

Ответы [ 3 ]

0 голосов
/ 17 июня 2020

Вы можете использовать значение provideIn как root. При этом не нужно указывать в модуле приложения.

 providedIn: 'root'

Если вы хотите добавить это в app.module.ts, удалите Injectable decorator из службы и добавьте в список поставщиков app.module.ts.

Подробнее см. В официальной документации. подробности. https://angular.io/guide/singleton-services

Также вы не можете указать имя модуля в providedin. Для этого есть предопределенные параметры «root», «любая» и «платформа». Вы можете узнать больше на https://angular.io/api/core/Injectable

0 голосов
/ 17 июня 2020

Вам необходимо добавить провайдеров в файл app.component.ts. Я добавил приведенный ниже фрагмент, и он работает нормально.

import { Component, VERSION } from '@angular/core';
import { AppServiceService } from './app-service.service';
@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ],
  providers: [AppServiceService]
})
export class AppComponent  {
  name = 'Angular ' + VERSION.major;
  constructor(ser: AppServiceService) {
      this.name = ser.sayHello();
  }
}
0 голосов
/ 17 июня 2020

Вам необходимо добавить AppService в массив поставщиков в app.module.ts, как указано в документации.

...