Угловая замена компонента
В одном случае данные отправляются из двух разных компонентов; скажем OneComponent
а также TwoComponent
и есть ResultComponent
которые получают эти данные через Input()
декоратор. Также в ResultComponent
данные объединяются с использованием OnChanges
интерфейс:
ngOnChanges(changes: SimpleChanges) {
if (changes['dataFromCompTwo']) {
this.dataFromComp = this.dataFromCompTwo;
}
}
и данные показаны в этом компоненте, но компонент создается дважды, а данные - в два раза. Как проверить, что данные уже отправлены с одного из компонентов и отображаются только последние отправленные данные?
STACKBLITZ => Я хотел бы показать Вот результат только один раз.
2 ответа
Это межкомпонентное общение. Вы должны использовать один из методов, описанных на этой странице документации Angular.
Я лично предпочитаю общение через службу, потому что компоненты тогда вообще не связаны: метод связи не зависит от их включения в DOM, поэтому вы можете перемещать их по своему усмотрению, он не сломается.
Если у вас есть два компонента, отправляющих изменения, вы можете получить к ним доступ, используя:
- changes.componentOne
- changes.componentTwo
SimpleChanges
имеет другое свойство под названием firstChange
который вы можете использовать, чтобы проверить, является ли это первое изменение, поступившее от этого конкретного компонента, как это:
changes.componentOne.firstchange
- это будет означать, что это первое изменение, отправленное компонентами