Чтобы использовать внедрение зависимостей в Angular Services / Components / Directive и других структурах, вам нужно Import
другие структуры и затем перечислить их в конструкторе.
Например (внедрение службы Title
) :
import { Title } from '@angular/platform-browser';
@Component({ ... })
export class AppComponent implements OnInit {
public constructor(private _titleService: Title) {}
public ngOnInit(): void {
this._titleService.setTitle("I'm the Home Page"); // use injected service
}
}
Теперь я хочу создать семейство polymorphi c с базовым классом и классами накопителей, в которое я добавляю внешние службы в базовый класс, и, кроме того, я хочу передавать параметры из класса накопителей в базовый класс
import { Title } from '@angular/platform-browser';
@Component({ ... })
export class BaseService {
public constructor(
private _titleService: Title,
private _message: string) {
console.log("Hello, I'm Base class. Message from Drive class: " + _message);
}
}
@Component({ ... })
export class DriveService extends BaseService {
public constructor() {
const message = "Hello from Drive class";
super(message); // <-- Error, missing parameter!
}
}
Я получаю ошибку в DriveService
из-за вызова BaseService
, потому что я не передаю titleService.
Теперь я не делаю ' не хочу передавать titleService от всех дочерних классов BaseService. Я хочу только импортировать и внедрить titleService один раз в коде BaseService и передать только параметр _message из всех дочерних классов.
Возможно ли это? если так как? или я должен импортировать TitleService и вставлять его в каждый экземпляр моего DriveClass