Зависимость внедрения службы не работает - PullRequest
1 голос
/ 09 апреля 2020

Привет, я новичок в angular, и я пытался следовать учебнику. Я попробовал все, но моя инъекция зависимости не работает. Это работает, когда я непосредственно помещаю СОБЫТИЯ в компонент списка событий.

Вот код.

компонент списка событий

import { Component } from '@angular/core';
import { EventService } from './shared/events.service';

@Component({
    selector: 'events-list',
    template: `<div>
    <h1>Upcoming Angular Events</h1>
    <hr>
    <div class="row">
        <div *ngFor="let event of events" class="col-md-5">
            <event-thumbnail  [event]="event">
            </event-thumbnail>
        </div>
    </div>
</div>
`
})

export class EventsListComponent {
    events: any[]

    constructor(private eventService: EventService) {    
        this.events = this.eventService.getEvents()
    }

   // ngOnInit() {
   //    this.events = this.eventService.getEvents()
   // }
}

event-service

import { Injectable } from '@angular/core'

@Injectable()

export class EventService {

    getEvents() {

        return EVENTS
    }
}

const EVENTS = [
  {
    ...
  }
]

app-module

import { EventService } from './events/shared/events.service';


@NgModule({
  imports: [
    BrowserModule
  ],
  declarations: [
    RootAppComponent,
    EventsListComponent,
    NavbarComponent,
    EventThumbnailComponent
  ],
  providers: [EventService],
  bootstrap: [RootAppComponent]
})
export class AppModule { }

1 Ответ

0 голосов
/ 09 апреля 2020

Не могли бы вы попробовать переписать свой сервис следующим образом:

@Injectable({
   providedIn: 'root'
})
export class EventService {
...
}

После этого вы можете удалить EventService из списка поставщиков вашего AppModule. Попробуйте, и если это не решит вашу проблему, не стесняйтесь спрашивать. Изменить: И я могу порекомендовать вам написать this.events = this.eventService.getEvents() в ngOnInit() не в конструкторе.

...