```typescript=
...
import { Actions, ofActionCompleted, Select, Store } from '@ngxs/store';
...
@Component({
selector: 'doa-root',
templateUrl: './app.component.html',
styleUrls: [ './app.component.scss' ],
animations: [
fadeInOnEnterAnimation()
]
})
export class AppComponent implements OnInit, AfterViewInit, OnDestroy {
...
constructor(...
private actions: Actions,
...) {
}
ngAfterViewInit(): void {
this.logger.debug('AppComponent.ngAfterViewInit():');
this.actions
.pipe(
ofActionCompleted(GetAllClassDefinitions),
tap(() =>
this.documentClassNamesList$
.pipe(take(1))
.subscribe((namesList: string[]) =>
this.store.dispatch(new GetAllTemplates(namesList)))
),
tap(() =>
this.mergedPropertyDefinitions$
.pipe(take(1))
.subscribe((propertyDefinitions: PropertyDefinitions) =>
this.store.dispatch(new SetDmsPropertyDefinitions(propertyDefinitions)))
)
).subscribe();
this.actions
.pipe(
ofActionCompleted(SetDmsDossierPath, SetDmsFieldQueries, SetDmsQueryString, SetDmsAggregations, SetUploadFinished, DeleteDocument),
delay(500),
tap(() => this.store.dispatch(new FetchDocuments()))
).subscribe();
this.actions
.pipe(
ofActionCompleted(SetPropertyId, SelectLocale),
delay(100),
tap(() =>
this.dmsQuery$
.pipe(take(1))
.subscribe((dmsQuery: DmsQuery) =>
this.store.dispatch([
new FetchTree(dmsQuery.propertyId),
new UpdateTreeDocumentCount(dmsQuery)
])
)
)
).subscribe();
}
ngOnDestroy(): void {
this.logger.debug('AppComponent.ngOnDestroy():');
}
get version() {
return environment.version;
}
get production() {
return environment.production;
}
closeModal() {
this.openModal = null;
}
}
```