В настоящее время мои компоненты наследуют свойства входного сигнала из этой директивы:
Код: Выделить всё
@Directive()
export abstract class BaseWidget {
data = input();
widgetSize = input(Size.S);
selectedLocation = input('');
timeslot = input(null);
@ViewChild('footer') footer!: TemplateRef | null;
}
Код: Выделить всё
export class MyComponent extends BaseWidget {}
Код: Выделить всё
const componentRef = viewContainerRef.createComponent(componentType);
componentRef.setInput('data', widgetConfig.data);
componentRef.setInput('widgetSize', this.widgetSize);
componentRef.setInput('timeslot', this.getWidgetInfoByType(this.widgetType).timeSlot);
componentRef.setInput('selectedLocation', widgetConfig.selectedLocation);
Код: Выделить всё
this.widgetSize // not this.widgetSize()
Я хочу, чтобы входные данные стали входными сигналами с помощью input() Angular, чтобы я мог читать их как функции:
Код: Выделить всё
this.widgetSize() // instead of this.widgetSize
input() создает входной сигнал только для чтения
Вопрос
Есть ли в Angular способ:
объявлять входные данные компонента как входные сигналы (this.widgetSize())
обновлять их динамически из контейнера с помощью createComponent
Или вам всегда приходится выбирать между входными сигналами только для чтения и обычными свойствами при использовании динамических компонентов?
Подробнее здесь: https://stackoverflow.com/questions/798 ... -directive
Мобильная версия