我有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();
}
}
答案 0 :(得分:0)
Angular使用依赖注入来管理服务,因此您不必自己实例化它们,但是Angular在创建服务时不知道如何处理参数'cn'。
我不确定为什么要在服务上设置carName,但是您不应该尝试通过构造函数来实现。
如果您还没有以下Angular文档链接,那是值得的:
我还将注意到,您可以在服务的构造函数中包含参数,但它们本身应该是可注入的。例如,通常会看到注入了logger服务的服务。