UNPKG

generator-zionapps

Version:

Angular 9 Code Generator

44 lines (39 loc) 2.36 kB
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';<% } %> @Component({ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-<%= paramCase(singularDomainName) %>-detail-widget', templateUrl: './<%= paramCase(singularDomainName) %>-detail-widget.component.html', styleUrls: ['./<%= paramCase(singularDomainName) %>-detail-widget.component.scss'], }) export class <%= pascalCase(singularDomainName) %>DetailWidgetComponent implements OnChanges { @Input() currentId: number; @Input() <%= camelCase(singularDomainName) %>: <%= pascalCase(singularDomainName) %>; @Input() hasAccess: boolean; @Output() 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)); } } } }