Измените значение на свойство, которое было получено как свойство @input - Angular 7 - PullRequest
0 голосов
/ 21 апреля 2020

Можно ли переназначить значение из дочернего компонента для свойства, которое я получаю как @Input из родительского компонента?

Как я вижу, это невозможно, если да, то почему? это просто ссылка, нет?

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020

Не уверен, что именно вы имеете в виду, но я отвечу, как я понял;)

@ Ввод - это односторонняя связь. Поэтому, если parent.component отправляет входные данные в child.component и вы переназначаете их в child.component, parent.component не знает об этих изменениях. Однако любое изменение в parent.component снова заменит значение в child.component.

Если вы не хотите, чтобы он был переопределен, вы можете либо реализовать интерфейс OnChange и вручную убедиться, что он больше не переопределяется.

ИЛИ

Используйте значение @Input только в качестве инициализатора и сохраните фактическое значение в переменной в child.component, поэтому в ngOnInit вы будете делать что-то вроде:

this.value = this.initializedValue;

, и впоследствии вы только меняете это значение.

(Если вы хотите двустороннюю привязку, чтобы изменения в child отражались в parent, просто предоставьте соответствующий @Output, сокращение [(variable)] фактически означает:

// Child component TS
@Input() variable: any;
@Output() variableChange = new EventEmitter<any>();

...

<!-- parent html -->
<app-child [(variable)]="parentVariable"></app-child>
0 голосов
/ 21 апреля 2020

Я думаю, что вы можете изменить значение из родительского компонента, как только вы измените значение, у вас ngOnChanges будет запущен на дочернем компоненте, где вы получите обновленное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...