Ошибка StaticInjectorError при создании экземпляра класса из службы
У меня есть 2 файла, один - app.component.ts, второй - cars.service.ts.
я создал класс в моем сервисе, и в конструкторе я передаю параметр вдоль метода в классе. Никаких проблем пока нет, но фактическая статистика проблем после создания экземпляра класса в app.component.ts.
Мой браузер выдает StaticInjectorError(AppModule)[Cars -> String]: StaticInjectorError(Платформа: ядро) [Cars -> String]: ошибка
Если я удалю параметр из конструктора, тогда проблема будет решена.. я не понимаю, что происходит.. любые предложения будут оценены.
Код моего сервисного файла [файл 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 ответ
Angular использует Dependency Injection для управления сервисами, поэтому вам не нужно создавать их экземпляры самостоятельно, но Angular не знает, что делать с параметром 'cn' при создании сервиса.
Я не уверен, почему вы хотите установить carName в вашем сервисе, но вы не должны пытаться сделать это через конструктор.
Было бы полезно проверить следующие ссылки документации Angular, если вы этого еще не сделали:
Также отмечу, что вы можете включать параметры в конструкторы ваших сервисов, но они должны быть сами по себе инъекционными. Например, типично видеть сервисы со встроенным в них сервисом регистрации.