Вы отправляете ShowMessage от родителя к потомку и, соответственно, вносите изменения в дочерний компонент. Затем, если какое-либо событие произойдет в потомке, сообщите об этом родителю, отправив событие, чтобы родительский элемент был синхронизирован с дочерним, и если родительский объект снова изменит это значение.в этом случае child получит это значение.
Проверьте ниже отредактированный код
childComponent.html
<div *ngIf="isShowMessage">
<p>Hey i was told by parent component to be shown Here i am !!!</p>
<button (click)="cancel()">cancel</button>
</div>
childComponent.ts
_isShowMessage = false;
@Input() set isShowMessage(value: boolean) {
this._isShowMessage = value;
}
@Output() hideParentValue = new EventEmitter();
get isShowMessage(): boolean {
return this._isShowMessage;
}
cancel(): void {
//comment this below code
// this._isShowMessage = false;
// this.isShowMessage = false;
//add this
this.hideParentValue.emit()
}
ParentComponent.html
<childComponent [isShowMessage]="isShowMessage"
(hideParentValue)="hideMessage()"></childComponent>
<button (click)="handleClick()">save</button>
ParentComponent.ts
isShowMessage = false;
handleClick(): void {
this.isShowMessage = true;
}
hideMessage():void {
this.isShowMessage = false;
}
Если проблема не устранена, вы можете сделать дочерний компонент для реализации интерфейса OnChanges, а затем реализовать функцию ngOnChanges иПоместите отладчик туда.
если отладчик изменения входа должен ударить .. вы можете найти основную причину вашей проблемы с помощью этого хука жизненного цикла.