Я работаю с созданием динамического компонента (resolveComponentFactory) , так что он работает с статическими свойствами @Input(). Но для динамического сеттера он не работает.Сеттер для свойства динамического компонента Угловой 2
Я не могу это сделать this.componentReference.instance[myPropVar]= someValue
с сеттер, созданный внутри компонента.
Возможно ли это? Благодаря!
свойство сеттера в моей динамической составляющей является:
@Input() set lockMessage(val: any) {
if (val) {
console.log("Visit details -> ", val);
}
}
это то же самое, как и в этом посте Angular 2 dynamic component creation
, но я хочу, чтобы добавить некоторые свойства, которые имеют сеттер к моему динамически созданному компоненту.
P.S. да. Я попытался настроить свое свойство на динамический компонент с этой конструкцией
/**
* public updateSingleComponentProp -> update single prop on component instance
* @param prop {string} -> property name
* @param val {any} -> property value
* @returns {void}
*/
public updateSingleComponentProp(prop: string, val: any): void {
let compInstance = this.componentReference.instance;
compInstance[prop] = val;
if (compInstance.hasOwnProperty(prop) || compInstance.hasOwnProperty('_' + prop))
compInstance[prop] = val;
else
throw new Error("Component doesn't have this property -> " + prop);
}
и он выдает сообщение об ошибке, поскольку это свойство не существует. Я проверил экземпляр компонента и установил его в прототипе
Не могли бы вы дать [mcve], который демонстрирует, что вы пытаетесь сделать? – jonrsharpe
Я не понимаю, почему это было проблемой. 'myPropVar' - это строка, которая соответствует имени свойства (' lockMessage'), правильно? Вам не нужно '@Input()', если вы обращаетесь к нему только по необходимости. Вы получили сообщение об ошибке? –
Да, я обновил свой пост – Velidan