ngx-config-form
Version:
use configuration to generate form
84 lines • 8.83 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, Input } from '@angular/core';
import { BaseInput } from '../../../common/baseInput';
export class ConfirmPasswordComponent extends BaseInput {
constructor() {
super();
}
/**
* @return {?}
*/
ngOnInit() {
super.ngOnInit();
this.groupElemValidators = this.cfFormSetting[this.propName].validators;
this.setComponentNotify();
}
/**
* @return {?}
*/
ngOnDestroy() {
super.ngOnDestroy();
this.ob.unsubscribe();
}
/**
* @private
* @return {?}
*/
setComponentNotify() {
this.ob = this.groupElem.statusChanges
.subscribe((/**
* @param {?} a
* @return {?}
*/
a => {
/** @type {?} */
const isValid = a === 'VALID';
/** @type {?} */
const vKey = `${this.propName}_`;
if (!isValid && this.groupElem.errors) {
/** @type {?} */
const errorObj = {};
for (const key of Object.keys(this.groupElem.errors)) {
errorObj[key] = {
msg: this.groupElemValidators[key].msg,
dirty: this.groupElem.dirty,
};
}
this.cfForm.notifyValidatedInfo(vKey, false, errorObj);
}
if (isValid) {
this.cfForm.notifyValidatedInfo(vKey, true);
}
}));
}
}
ConfirmPasswordComponent.decorators = [
{ type: Component, args: [{
selector: 'cf-inputs-confirm-password',
template: "<ng-container [formGroup]=\"cfFormGroup\">\n <ng-container [formGroupName]=\"propName\">\n <ng-container *ngIf=\"{ \n elem: cfFormGroup.get(propName) \n }; let gInfo\">\n\n <ng-container *ngFor=\"let item of cfFormSetting[propName].items\">\n <ng-container *ngIf=\"{ \n elem: cfFormGroup.get([propName, item.name]) \n }; let info\">\n\n <div class=\"form-group\">\n <label [for]=\"item.name\" *ngIf=\"item.args['alias']\">{{item.args['alias']}}</label>\n <input type=\"password\" \n class=\"form-control\" \n [formControlName]=\"item.name\"\n [id]=\"item.name\"\n [placeholder]=\"item.args['placeholder']\"\n [ngClass]=\"{'is-invalid': info.elem.dirty && info.elem.errors && info.elem.invalid }\">\n \n <small class=\"form-text text-muted\" *ngIf=\"item.args['murmur']\">\n {{item.args['murmur']}}\n </small>\n\n <ng-container *ngIf=\"info.elem.dirty && info.elem.errors && info.elem.invalid\">\n <small class=\"form-text text-danger\" *ngFor=\"let vName of ObjectUtil.keys(info.elem.errors)\">\n {{item.validators[vName].msg}}\n </small>\n </ng-container>\n\n </div>\n\n <!-- <hr />\n info.elem.dirty : {{ info.elem.dirty | json }} <br />\n info.elem.errors: {{ info.elem.errors | json }} <br />\n info.elem.value: {{ info.elem.value | json }}\n <hr /> -->\n\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isShowErrorMsg && gInfo.elem.dirty && gInfo.elem.errors && gInfo.elem.invalid\">\n <small class=\"form-text text-danger\" *ngFor=\"let vName of ObjectUtil.keys(gInfo.elem.errors)\">\n {{cfFormSetting[propName].validators[vName].msg}}\n </small>\n </ng-container>\n\n <!-- <hr />\n gInfo.elem.invalid: {{ gInfo.elem.invalid | json }} <br />\n gInfo.elem.dirty: {{ gInfo.elem.dirty | json }} <br />\n gInfo.elem.errors: {{ gInfo.elem.errors | json }} <br />\n gInfo.elem.value: {{ gInfo.elem.value | json }}\n <hr /> -->\n\n </ng-container>\n\n </ng-container>\n</ng-container>\n\n",
styles: [""]
}] }
];
/** @nocollapse */
ConfirmPasswordComponent.ctorParameters = () => [];
ConfirmPasswordComponent.propDecorators = {
propName: [{ type: Input }]
};
if (false) {
/** @type {?} */
ConfirmPasswordComponent.prototype.propName;
/**
* @type {?}
* @private
*/
ConfirmPasswordComponent.prototype.ob;
/**
* @type {?}
* @private
*/
ConfirmPasswordComponent.prototype.groupElemValidators;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1wYXNzd29yZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtY29uZmlnLWZvcm0vIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9pbnB1dHMvY29uZmlybS1wYXNzd29yZC9jb25maXJtLXBhc3N3b3JkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQVd0RCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsU0FBUztJQU9yRDtRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQzs7OztJQUVELFFBQVE7UUFDTixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUV4RSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDOzs7O0lBRUQsV0FBVztRQUNULEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7Ozs7O0lBRU8sa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhO2FBQ25DLFNBQVM7Ozs7UUFBQyxDQUFDLENBQUMsRUFBRTs7a0JBQ1AsT0FBTyxHQUFHLENBQUMsS0FBSyxPQUFPOztrQkFDdkIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRztZQUVoQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFOztzQkFDL0IsUUFBUSxHQUFlLEVBQUU7Z0JBQy9CLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO29CQUNwRCxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUc7d0JBQ2QsR0FBRyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHO3dCQUN0QyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLO3FCQUM1QixDQUFDO2lCQUNIO2dCQUNELElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQzthQUN4RDtZQUVELElBQUksT0FBTyxFQUFFO2dCQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQzdDO1FBQ0gsQ0FBQyxFQUFDLENBQUM7SUFDUCxDQUFDOzs7WUFuREYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSw0QkFBNEI7Z0JBQ3RDLCt2RUFBZ0Q7O2FBRWpEOzs7Ozt1QkFLRSxLQUFLOzs7O0lBQU4sNENBQTBCOzs7OztJQUUxQixzQ0FBeUI7Ozs7O0lBQ3pCLHVEQUFvRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhc2VJbnB1dCB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9iYXNlSW5wdXQnO1xuaW1wb3J0IHsgSUVycm9ySW5mbyB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9JRXJyb3JJbmZvJztcbmltcG9ydCB7IElJbnB1dFZhbGlkYXRvclNldHRpbmcgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vSUlucHV0VmFsaWRhdG9yU2V0dGluZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NmLWlucHV0cy1jb25maXJtLXBhc3N3b3JkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpcm0tcGFzc3dvcmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb25maXJtLXBhc3N3b3JkLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5cblxuZXhwb3J0IGNsYXNzIENvbmZpcm1QYXNzd29yZENvbXBvbmVudCBleHRlbmRzIEJhc2VJbnB1dCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBwcm9wTmFtZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgb2I6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBncm91cEVsZW1WYWxpZGF0b3JzOiBJSW5wdXRWYWxpZGF0b3JTZXR0aW5nO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuZ3JvdXBFbGVtVmFsaWRhdG9ycyA9IHRoaXMuY2ZGb3JtU2V0dGluZ1t0aGlzLnByb3BOYW1lXS52YWxpZGF0b3JzO1xuXG4gICAgdGhpcy5zZXRDb21wb25lbnROb3RpZnkoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5vYi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb21wb25lbnROb3RpZnkoKSB7XG4gICAgdGhpcy5vYiA9IHRoaXMuZ3JvdXBFbGVtLnN0YXR1c0NoYW5nZXNcbiAgICAgIC5zdWJzY3JpYmUoYSA9PiB7XG4gICAgICAgIGNvbnN0IGlzVmFsaWQgPSBhID09PSAnVkFMSUQnO1xuICAgICAgICBjb25zdCB2S2V5ID0gYCR7dGhpcy5wcm9wTmFtZX1fYDtcblxuICAgICAgICBpZiAoIWlzVmFsaWQgJiYgdGhpcy5ncm91cEVsZW0uZXJyb3JzKSB7XG4gICAgICAgICAgY29uc3QgZXJyb3JPYmo6IElFcnJvckluZm8gPSB7fTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLmdyb3VwRWxlbS5lcnJvcnMpKSB7XG4gICAgICAgICAgICBlcnJvck9ialtrZXldID0ge1xuICAgICAgICAgICAgICBtc2c6IHRoaXMuZ3JvdXBFbGVtVmFsaWRhdG9yc1trZXldLm1zZyxcbiAgICAgICAgICAgICAgZGlydHk6IHRoaXMuZ3JvdXBFbGVtLmRpcnR5LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5jZkZvcm0ubm90aWZ5VmFsaWRhdGVkSW5mbyh2S2V5LCBmYWxzZSwgZXJyb3JPYmopO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgICAgICB0aGlzLmNmRm9ybS5ub3RpZnlWYWxpZGF0ZWRJbmZvKHZLZXksIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG59XG4iXX0=