web-dev-qa-db-ja.com

Angular 5、NullInjectorError:サービスのプロバイダーがありません

こんにちは私がエラーを構築するサービスを追加すると、私のwebアプリケーションにfirestoreを実装しようとしています:

NullInjectorError:TesteventServiceのプロバイダーがありません!

Angular 5、angularfire2/firestoreおよびTypeScript 2.7.1を使用しています。

testevent.service.ts

import { Injectable } from '@angular/core';
import { AngularFirestore } from 'angularfire2/firestore'

@Injectable()
export class TesteventService {

  constructor(private afs: AngularFirestore) { }

  addEvent(eventData){
    this.afs.collection('testevent').add(eventData).then(() => {
      console.log('Done');
    })
  }

  getEvent(){
    return this.afs.collection('testevent', ref => ref.orderBy('id')).valueChanges()
  }
}

component.ts

import { Component, OnInit } from '@angular/core';
import { TesteventService } from '../../providers/testevent.service';
import { AngularFirestore } from 'angularfire2/firestore';

export class CsvImportComponent implements OnInit {
  data_rows = []

  constructor(private event: TesteventService){})

TesteventSeriviceからイベントを追加すると、何も実行されていないときにエラーが発生します。

10
Mr. Toast

App.module.tsのインポートの下のプロバイダーの下にTesteventServiceを追加する必要があります

providers: [
  TesteventService 
]
31
Sajeetharan

-でサービスクラスに注釈を付けます

@Injectable({providedIn: 'root'})サービス自体は、CLIが生成したクラスであり、@ Injectable()で装飾されています。デフォルトでは、このデコレーターには、サービスのプロバイダーを作成するprovidedInプロパティがあります。この場合、providedIn: 'root'は、Angularがルートインジェクターでサービスを提供する必要があることを指定します。

4
Vivek Kalekere