从服务实例化类时出现StaticInjectorError错误

时间:2019-02-11 14:50:20

标签: javascript angular dependency-injection angular7

我有2个文件,一个是app.component.ts,第二个是cars.service.ts

我在我的服务中创建了一个类,并且在构造函数中,我在类中的方法旁边传递了一个参数。直到这里没有问题,但是在app.component.ts中创建类的实例之后的实际问题统计信息。

我的浏览器抛出 StaticInjectorError(AppModule)[汽车->字符串]:   StaticInjectorError(平台:核心)[汽车->字符串]:错误

如果我从构造函数中删除了该参数,那么问题就解决了。.我不明白发生了什么..任何建议将不胜感激。

我的服务文件代码[cars.service.ts文件]

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

@Injectable()
export class Cars {

carName: string;

    constructor(public cn: string) {
        this.carName = cn;
    }

    sayHello() {
        console.log('from cars.service.ts');
    }

}

我的app.component.ts

import { Component } from '@angular/core';
import { Cars } from './cars.service';

@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})

export class AppComponent {
  title = 'cars';

  list: Cars = new Cars('Audi');

      constructor(private cs:Cars) {

  }

  btnClick() {
    this.cs.sayHello();
  }

}

1 个答案:

答案 0 :(得分:0)

Angular使用依赖注入来管理服务,因此您不必自己实例化它们,但是Angular在创建服务时不知道如何处理参数'cn'。

我不确定为什么要在服务上设置carName,但是您不应该尝试通过构造函数来实现。

如果您还没有以下Angular文档链接,那是值得的:

我还将注意到,您可以在服务的构造函数中包含参数,但它们本身应该是可注入的。例如,通常会看到注入了logger服务的服务。