Я пытаюсь установить значение в сервисе из одного компонента и прочитать его из другого.
Иерархия моих компонентов выглядит следующим образом: parent => child => grandchild
Если я установите значение службы в первом дочернем компоненте, родительский объект получит правильное значение из службы, тогда как, если я установлю значение в дочернем более внутреннем дочернем компоненте, родительский компонент не получит правильное значение.
Ниже приведен код:
service.ts
@Injectable()
export class ConfirmationDialogService {
componentHasDirtyForm: boolean;// value to set
constructor(private confirmationDialogReferenceService: ConfirmationDialogReferenceService,
private dialog: MatDialog) { }
parentComponent.ts
constructor(private confirmService: ConfirmationDialogService) {
}
ngOnInit() {
}
isDirty(): boolean {
console.log(this.confirmService.componentHasDirtyForm)
return this.confirmService.componentHasDirtyForm;
}
ChildComponent.ts
constructor(private confirmService: ConfirmationDialogService) { }
ngAfterViewChecked(){
this.confirmService.componentHasDirtyForm = this.generalInfoForm.dirty;
}
GrandchildComponent (отображается внутри дочернего компонента)
constructor(private confirmationService: ConfirmationDialogService) { }
ngAfterViewChecked(){
this.checkForDirtyForm();
}
checkForDirtyForm(){
for(var i = 0; i < this.ContactFormArr.length; i++){
if(this.ContactFormArr.at(i).dirty){
this.confirmationService.componentHasDirtyForm = true;
break;
}
}
}
В основном, в компоненте внука я пытаюсь установить для свойства componentHasDirtyForm ConfirmationDialogService. Это правильно читается в родительском, если я установил это от ребенка, но не внука.
Я включил службу в качестве поставщика в app.module.ts