Угловой: получить изменения от ввода()

#angular #ngonchanges

Вопрос:

У меня есть компонент с именем ftn-popin-открывалка

 <label>{{ selectedValue }}</label>
 

где SelectedValue-это вход()

 @Input() selectedValue: string;

 

Внутри другого компонента, в котором я использую открыватель ftn-popin, я хотел бы обнаруживать каждый раз, когда изменяется значение Input() SelectedValue:

 <ftn-popin-opener
   [selectedValue]='professionalSituation | titlecase'>
</ftn-popin-opener> 
 

Я пробовал использовать ngOnChanges (), но это не работает

   ngOnChanges(changes: SimpleChanges): void {
    console.log(changes.professionalSituation.currentValue);
  }
 

Комментарии:

1. Вы хотите обнаружить изменения в ftn-popin-opener компоненте, верно? Не могли бы вы, пожалуйста, разместить код вашего ftn-popin-opener компонента здесь?

Ответ №1:

Вы должны использовать метод жизненного цикла ngOnChanges в компоненте, где есть @Input, в вашем случае вы должны использовать его в компоненте popin-opener

Ответ №2:

Я не уверен, как professionalSituation это обрабатывается в вашем родительском компоненте, но то, что вы могли бы сделать в своем ftn-popin-opener компоненте @Input , — это создать такой сеттер:

 export class FtnPopinOpenerComponent {
  myValue!: string;
 
  @Input() set selectedValue(value: string) {
     this.myValue = value;
  }
}
 

В вашем HTML-шаблоне:

 <label>{{ myValue }}</label>