невозможно получить доступ к переменным ссылки шаблона

В child.ts у меня есть функция onButtonClicked, которая изменяет revertDisabled с true на false.

Возникла проблема, из-за которой ссылочная переменная шаблона в parent.html по-прежнему получает значение true для переменной revertDisabled, даже после того, как пользователь выполнил функцию onButtonClicked() в child.ts, которая изменила значение revertDisabled с true на false.

Я попытался решить эту проблему, добавив @input в parent.ts, но все еще не смог получить доступ к измененному значению revertDisabled .

родительский.html

<button type="button" [disabled]="interface.revertDisabled"></button>
<interface-settings #interface></interface-settings>

child.ts (interface-settings.ts)

this.revertDisabled = true;

onButtonClicked() {
  this.revertDisabled = false;
}

person user21    schedule 07.08.2020    source источник


Ответы (1)


Да, родитель не получит значение таким образом. Через переменную шаблона вы можете выполнить дочерний метод, как описано здесь: https://angular.io/guide/component-interaction#parent-interacts-with-child-via-local-variable

Но руководство также прямо говорит об этом:

Родительский компонент не может привязать данные ни к методам запуска и остановки дочернего элемента, ни к его свойству «секунды».

Вы можете выполнить то, что вам нужно, используя @Output и шаблон, описанный здесь: https://angular.io/guide/component-interaction#parent-listens-for-child-event

В принципе:

 //child.ts (interface-settings.ts)

 @Output() revertDisabled = new EventEmitter<boolean>();

 onButtonClicked() {
    this.revertDisabled.emit(false);
 }

тогда:

 //  parent.html
 <button #parentButton type="button"></button>
 <interface-settings (revertDisabled)="parentButton.disabled=false"></interface-settings>
person Sergey Rudenko    schedule 07.08.2020
comment
Благодарю вас! Кстати, интересно, знаете ли вы об этом, у меня есть еще один вопрос по адресу stackoverflow.com/questions/63309569/ - person user21; 08.08.2020
comment
кажется, вы связываете этот самый вопрос? извините, я запутался - person Sergey Rudenko; 10.08.2020
comment
Извините, это ссылка stackoverflow.com/questions/63310432/ - person user21; 10.08.2020
comment
ответил вам на этот вопрос. Если этот здесь помог - пожалуйста, примите ответ и то же самое для другого ответа. Ваше здоровье! - person Sergey Rudenko; 11.08.2020
comment
Я попробую предложение по другому вопросу. Я принял ответ на этот вопрос. Спасибо большое! - person user21; 11.08.2020