У меня есть два компонента, которые взаимодействуют друг с другом, обычный компонент (родительский) и модальный компонент начальной загрузки (дочерний).
И у родителя, и у ребенка есть таблица с записями. В таблице родителей каждая запись имеет флажок. Когда я выбираю один или несколько флажков и нажимаю на кнопку, запускается событие, которое пытается заполнить дочернюю таблицу.
Таблица ребенка заполняется, и у меня есть возможность удалить из нее нужные мне записи. Если я удаляю некоторые записи, закрываю модальное (закрывающее дочернее) и решаю снова отправить те же данные от родительского к дочернему, событие Input
не вызывается. Однако, если я решу проверить разные записи в родительском и передать их дочернему элементу, событие Input
будет запущено правильно.
Вот что у меня есть:
ParentComponent.component.html
<child-component #createNewProductRequestModal [data]="newProductRequest"></m-child-component>
ParentComponent.component.ts
private onNewProductRequest(toSend){
this.newProductRequest = toSend;
$('#createNewProductRequestModal').appendTo("body").modal('toggle');
}
ChildComponent.component.ts
@Input('data')
set data(data: any) {
if (data !== undefined || data !== "") {
this.products = data;
console.log("data");
}
}
constructor() { }
ngOnInit() { }
Чтобы проверить, изменились ли данные до того, как я отрисовываю дочернюю таблицу, я записываю данные, переданные родителем в консоль. С этим кодом каждый раз, когда я выполняю родительский onNewProductRequest(toSend)
без изменения переменной toSend
, дочерний модальный рендеринг, но не выполняет событие Input
, следовательно, не изменяя данные.