【问题标题】:NullInjectorError: No provider for classNullInjectorError:没有类的提供者
【发布时间】:2018-02-26 12:26:04
【问题描述】:

我在组件类中注入了类作为依赖注入并得到一个错误

NullInjectorError: 类没有提供者

这是我的代码:

// Component
import { Formation } from './Models/Formation';

export class FormationComponent {
  constructor(private formation: Formation) { }
}

// Model Class
export class Formation {
}

会有什么问题?

【问题讨论】:

  • 如果形成是一项服务,请将其添加到您的应用模块中的提供程序。如果它不是服务,那么它应该是,使用 Injectable 注释。
  • 这是一个代表数据模型的简单类。如何注释一个类以及为什么我们不能像 C# 中的简单类一样定义它。你能告诉我吗

标签: angular angular2-services


【解决方案1】:

Angular 6+

import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class MyService {
    
    constructor() {
    }
}

角度 5

方法一。app.module.ts的提供者中添加类

@NgModule({
  // ----
  providers: [
    MyService // added class in the providers
  ]
  // ----
})
export class AppModule { }

方法二。componentprovider中添加类

@Component({
  selector: 'app-my-component',
  templateUrl: './my-component.component.html',
  styleUrls: ['./my-component.component.scss'],
  providers: [
    MyService // added class in the providers
  ]
})
export class MyComponent {

  constructor(private service: MyService) {
  }

}

重要提示:请不要忘记将类注释为@Injectable,以便您可以将其注入构造函数中,即

import { Injectable } from "@angular/core";

@Injectable() // class annotation as Injectable
export class MyService {

    constructor() {
    }
}

【讨论】:

  • 在Ang 7工作:: @Injectable({ providedIn: 'root' }) export class LoginComponent implements OnInit {
【解决方案2】:

我遇到了同样的问题,解决方案是在应用模块中添加服务引用。一旦包括在内,您就可以轻松摆脱它。

注意:Angular 4 是相同的解决方案。已检查

【讨论】:

    猜你喜欢
    • 2019-11-16
    • 2021-01-20
    • 2019-06-25
    • 2018-09-19
    • 2018-05-02
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多