- У меня есть страница (Компонент).
- В коде этой страницы я делаю объект класса B; когда я это делаю, я хочу передать ему некоторые свойства для его инициализации (флаг редактирования, ID и т. д. c.)
- Класс B расширяет класс A.
Оба класс A и класс B нуждаются в некоторых службах, таких как MatSnackBar, AuthService и некоторых службах данных.
для добавления служб в класс вы объявляете их как частные в конструкторе (вы видите, куда я иду с этим?)
ВОПРОС: Как передать параметры в класс B, которые затем будут переданы в класс A?
обычно в классе A, я бы объявил конструктор - я добавил опционально к своим службам, чтобы мне не приходилось их передавать?
export Class A {
constructor(id: number, editFlag: boolean,
@Optional() private snackBar: MatSnackBar, @Optional() private auth: AuthService, @Optional private dataService: DataService, etc...)
, что делает кажется, работает ...
Но затем в классе B, мне нужно объявить аналогичный конструктор:
export Class B extends A {
constructor(id: number, editFlag: boolean,
@Optional() private snackBar: MatSnackBar, @Optional() private auth: AuthService, @Optional
private dataService: DataService, etc...)
{
super(id, editFlag);
}
}
Изначально он не работал. Мне нужно было объявить закрытые параметры защищенными, чтобы заставить его скомпилироваться, и мне пришлось вызвать super(id, editFlag, snackBar, auth, ...)
и ... это тоже не работает, так как объекты, кажется, не передаются.
Есть ли другой способ объявить мои частные сервисы, или есть другой способ передать параметры? Или мне нужно сделать set / get методы для установки параметров и запуска вещей, которые должны происходить на их основе?