lib/features/src/questions/questionnaire/questionnaire.module.ts
Static forChild | |||||||||
forChild(stores: Type
|
|||||||||
Parameters :
Returns :
ModuleWithProviders<QuestionnaireModule>
|
import {
NgModule,
Component,
ModuleWithProviders,
Type
} from '@angular/core'
import { RouterModule } from '@angular/router'
import {
BaseMetaStoreModule,
MetaAction,
MetaStoreModule,
provideItemRepresentation,
provideTranslationMap,
provideMainMenuEntry,
SharedModule,
TranslationsModule,
} from '@rcc/common'
import {
Question,
QuestionConfig,
QuestionStore,
} from '@rcc/core'
import { Questionnaire } from './questionnaire.service'
import {
QUESTION_STORES,
QUESTION_META_ACTIONS
} from './questionnaire.commons'
import { QuestionnairePage } from './questionnaire.page/questionnaire.page'
import {
Id2QuestionPipe,
AsAnswerToPipe,
LabeledOptionsPipe
} from './questionnaire.pipes'
import { QuestionLabelComponent } from './question-label/question-label.component'
import en from './i18n/en.json'
import de from './i18n/de.json'
const routes = [
{ path: 'questionnaire', component: QuestionnairePage },
]
const questionnaireConfig = {
itemClass: Question,
serviceClass: Questionnaire,
}
const itemRepresentation = {
itemClass: Question,
icon: 'question',
labelComponent: QuestionLabelComponent,
}
const pipes = [
Id2QuestionPipe,
AsAnswerToPipe,
LabeledOptionsPipe
]
export class MenuEntryQuestionnaireComponent {}
const menuEntry = {
position: 5,
label: "QUESTIONNAIRE.MENU_ENTRY",
icon: "question",
path: "/questionnaire",
}
@NgModule({
declarations: [
QuestionnairePage,
QuestionLabelComponent,
...pipes
],
imports: [
SharedModule,
RouterModule.forChild(routes),
MetaStoreModule.forChild(questionnaireConfig),
TranslationsModule
],
exports: [
MetaStoreModule, //So other Module need not import this specifically
...pipes
],
providers:[
Questionnaire,
provideTranslationMap("QUESTIONNAIRE", {en, de} ),
provideMainMenuEntry(menuEntry),
provideItemRepresentation(itemRepresentation)
]
})
export class QuestionnaireModule extends BaseMetaStoreModule {
static forChild(
stores : Type<QuestionStore>[],
metaActions? : MetaAction<QuestionConfig, Question, QuestionStore>[]
): ModuleWithProviders<QuestionnaireModule> {
const mwp = BaseMetaStoreModule.getModuleWithProviders<QuestionnaireModule>(this, stores, metaActions, QUESTION_STORES, QUESTION_META_ACTIONS)
return mwp
}
}