generator-zionapps
Version:
Angular 9 Code Generator
44 lines (39 loc) • 2.36 kB
text/typescript
import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, Output, SimpleChange, SimpleChanges } from '@angular/core';
import { Store } from '@ngrx/store';
import { NgRxCoreAngularNavActions } from '@zionapps/ngrx-angular';
import { INgRxCoreMeta } from '@zionapps/ngrx-core';<% if (ngRxSubStoreLocation) { %>
import { <%= pascalCase(singularDomainName) %>, <%= pascalCase(pluralDomainName) %>Actions } from '<%= ngRxSubStoreLocation %>';<% } else { %>
import { <%= pascalCase(pluralDomainName) %>Actions } from '../../../../../store/<%= paramCase(pluralDomainName) %>/<%= paramCase(pluralDomainName) %>.actions';
import { <%= pascalCase(singularDomainName) %> } from '../../../../../store/<%= paramCase(pluralDomainName) %>/<%= paramCase(pluralDomainName) %>.domain';<% } %>
export class <%= pascalCase(singularDomainName) %>DetailWidgetComponent implements OnChanges {
currentId: number;
<%= camelCase(singularDomainName) %>: <%= pascalCase(singularDomainName) %>;
hasAccess: boolean;
editClick = new EventEmitter<<%= pascalCase(singularDomainName) %>>();
readonly meta: INgRxCoreMeta;
constructor(private store$: Store<any>) {
this.meta = { source: '<%= pascalCase(singularDomainName) %>DetailWidgetComponent' };
}
ngOnChanges(changes: SimpleChanges): void {
if (changes.hasAccess) {
this.handleAccessChanges(changes.hasAccess);
}
}
private handleAccessChanges(change: SimpleChange): void {
const { currentValue, previousValue } = change;
if (!previousValue && currentValue) {
if (this.currentId) {
this.store$.dispatch(<%= pascalCase(pluralDomainName) %>Actions.SetCurrentId(this.currentId, this.meta));
this.store$.dispatch(<%= pascalCase(pluralDomainName) %>Actions.FetchOneRemoteRequest(this.currentId, this.meta));
} else {
this.store$.dispatch(NgRxCoreAngularNavActions.NavigateByUrlRequest(`/<%= paramCase(componentName) %>`, this.meta));
}
}
}
}