У меня есть модуль в Angular, который структурирован так:
moduleName
componentA
componentB
Теперь componentA
и componentB
очень похожи, поскольку они имеют некоторые атрибуты и методы, например:
protected available: boolean = true;
Поскольку я не хочу повторяться, я создал базовый класс, который хранит все это:
export abstract class BaseComponent {
protected available: boolean = true;
}
И оба контроллера наследуются от этого класса:
import { BaseComponent } from '../base.component';
export class ComponentA extends BaseComponent implements OnInit {
constructor() {
super();
}
ngOnInit() {
console.log(this.available);
}
}
Это работает просто отлично.Однако, когда я исследую эту мысль, многие люди говорят:
Не используйте наследование, используйте композицию в этом случае.
Хорошо, но как я могу использовать композицию вместо этого?И действительно ли выигрыш такой большой по сравнению с текущим решением?
Большое спасибо за ваше время.