У меня есть вопрос, касающийся лучших практик компонентной архитектуры / связи.
Рядом с привязками свойств и службами я недавно заметил следующую настройку родитель-потомок и хотел знать, что вы об этом думаете?
Преимущество / недостаток / вариант использования / практический опыт?
Очевидный недостаток, который я вижу, заключается в том, что вся реализация происходит в родительском / главном компоненте.
Другие аспекты могут быть:
- ChangeDetection
- производительности
- иерархическое структурирование больших компонентов
Я надеюсь, что минимальный пример может проиллюстрировать принцип.
Основой этого принципа являются инъекция и ссылка на класс (см .: циклические разрывы-с-вперед-ссылкой на класс-forward-ref ).
@Component({
providers: [
{ provide: MyApp1, useExisting: forwardRef(() => AppComponent) },
{ provide: MyApp2, useExisting: forwardRef(() => AppComponent) },
{ provide: MyApp3, useExisting: forwardRef(() => AppComponent) },
],
selector: "app-root",
styleUrls: ["./app.component.scss"],
templateUrl: "./app.component.html",
})
export class AppComponent implements MyApp1, MyApp2, MyApp3 {
childProp1 = "property of child, defined in parent";
private iHaveAccessToParentProp = true;
childMethod1(): void {
console.log(this.iHaveAccessToParentProp);
}
}
export abstract class MyApp1 {
abstract readonly childProp1: string;
abstract childMethod1(): void;
}
@Component({
selector: "app-myApp1",
styleUrls: ["./myapp1.component.scss"],
templateUrl: "./myapp1.component.html",
})
export class MyApp1Component {
constructor(public app: MyApp1) {
}
}
<!------- myapp1.component.html ----->
<p>{{ app.childProp1 }}</p>