diff --git a/src/param/param-definition.ts b/src/param/param-definition.ts index a2e3f635c2bb4e6a653d695574fa8d4991e8d349..10e505406c18bc57aa77e11bd3109d2101089441 100644 --- a/src/param/param-definition.ts +++ b/src/param/param-definition.ts @@ -103,6 +103,9 @@ export class ParamDefinition implements INamedIterableValues, IObservable { /** implémentation par délégation de IObservable */ private _observable: Observable; + /** disable value validation */ + private _allowInvalidValues: boolean; + /** * @param ignoreValue true if provided value must be ignored (@see nghyd/enableEmptyFieldsOnFormInit) */ @@ -131,6 +134,7 @@ export class ParamDefinition implements INamedIterableValues, IObservable { this.visible = visible; this.valueMode = ParamValueMode.SINGLE; this.extensionStrategy = ExtensionStrategy.REPEAT_LAST; + this._allowInvalidValues = false; this.setDomain(d); @@ -578,6 +582,10 @@ export class ParamDefinition implements INamedIterableValues, IObservable { * an error if value is outside the domain */ public checkValueAgainstDomain(v: number) { + if (this._allowInvalidValues) { + return; + } + const sDomain = ParamDomainValue[this._domain.domain]; switch (this._domain.domain) { @@ -1208,6 +1216,18 @@ export class ParamDefinition implements INamedIterableValues, IObservable { return res; } + public get allowInvalidValues(): boolean { + return this._allowInvalidValues; + } + + public set allowInvalidValues(b: boolean) { + const old = this._allowInvalidValues; + this._allowInvalidValues = b; + if (old && !b && !this.isValid) { + throw new Error("ParamDefinition : valeur non valide"); + } + } + /** * notification envoyée après la modification de la valeur du paramètre */