Skip to content

Instantly share code, notes, and snippets.

@SoEasy
Last active March 5, 2018 07:00
Show Gist options
  • Save SoEasy/3d295d9fd065a9bdfef49707564ea1c3 to your computer and use it in GitHub Desktop.
Save SoEasy/3d295d9fd065a9bdfef49707564ea1c3 to your computer and use it in GitHub Desktop.
Наброски прокси-класса
class MetaValidationProxy {
validity$: BehaviorSubject;
attachSource(): void {
// Тут все начальные данные перекинутся в прокси и создастся привязка для проброса данных
}
}
// Класс, в котором без декораторов задаются параметры для валидаций
@Proxy
class EmployeeValidationProxy extends MetaValidationProxy {
name = MetaValidate.String().required().make();
age = MetaValidate.Number.min(18).max(75).make();
}
// Класс с данными, чистая модель
class Employee {
name: string;
age: number;
}
const employeeModel = new Employee();
const employeeProxy = new EmployeeValidationProxy();
employeeProxy.attachSource(employeeModel);
// Теперь в разметке надо биндить данные в employeeProxy, она
employeeProxy.age = 25;
console.log(employeeModel.age); // 25
@SoEasy
Copy link
Author

SoEasy commented Mar 5, 2018

основная идея - отделить мета-информацию от чистой модели путем проксирования данных через класс, в котором будет всякая логика обработки установки-получения значений

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment