Exemplo n.º 1
0
        protected virtual AngularFormValidator[] GetValidators(TypeScriptPropertyDefinition definition)
        {
            List <AngularFormValidator> validators = new List <AngularFormValidator>();

            IEnumerable <Attribute> attributes = definition.PropertyInfo.GetCustomAttributes <Attribute>(true);

            if (attributes.Any(o => o is RequiredAttribute || o is RequiredIfAttribute))
            {
                validators.Add(new AngularFormValidator("Validators.required"));
            }

            if (attributes.Any(o => o is EmailAddressAttribute))
            {
                validators.Add(new AngularFormValidator("Validators.email"));
            }

            if (attributes.SingleOrDefault(o => o is MinLengthAttribute) is MinLengthAttribute minLength)
            {
                validators.Add(new AngularFormValidator($"Validators.minLength({minLength.Length})"));
            }

            if (attributes.SingleOrDefault(o => o is MaxLengthAttribute) is MaxLengthAttribute maxLength)
            {
                validators.Add(new AngularFormValidator($"Validators.maxLength({maxLength.Length})"));
            }

            //this.OnConvertingValidator(this, validators);

            return(validators.ToArray());
        }
Exemplo n.º 2
0
        private bool CastArrayAsFormControl(TypeScriptPropertyDefinition definition)
        {
            KeyValuePair <string, bool> arrayType = GetGenerericTypes(definition.PropertyInfo.PropertyType).First();

            return
                (definition.TypeName == "Array<string>" ||
                 definition.TypeName == "Array<number>" ||
                 definition.TypeName == "Array<boolean>" ||
                 arrayType.Key == "string" ||
                 arrayType.Key == "number" ||
                 arrayType.Key == "boolean");
        }
Exemplo n.º 3
0
        protected virtual IAngularControl GetControl(TypeScriptPropertyDefinition definition)
        {
            AngularFormValidator[] validators = GetValidators(definition);

            if (IsArray(definition.PropertyInfo.PropertyType))
            {
                if (CastArrayAsFormControl(definition))
                {
                    return(new AngularAbstractControl(definition.Name, "FormControl", "null", validators));
                }
                else
                {
                    return(new AngularAbstractControl(definition.Name, "FormArray", "[]", validators));
                }
            }
            else if (IsDictionary(definition.PropertyInfo.PropertyType))
            {
                //TODO: Is there a correct type in Angular?
                return(new AngularAbstractControl(definition.Name, "FormControl", "null", validators));
            }
            else
            {
                switch (definition.TypeName)
                {
                case "boolean":
                    return(new AngularAbstractControl(definition.Name, "FormControl", definition.IsRequired ? "false" : "null", validators));

                case "string":
                case "number":
                    return(new AngularAbstractControl(definition.Name, "FormControl", "null", validators));

                default:
                    return(GetGroup(new TypeScriptModel(
                                        definition.Name,
                                        definition.PropertyInfo.PropertyType)));
                }
            }
        }