Масштабируемость в связываниях Agular с использованием класса Model - PullRequest
0 голосов
/ 20 марта 2019

Я новичок в Angular и нахожу приемлемый и модульный способ заполнения набора производных переменных в классе.

export class Calculator {
    constructor(
        public x?: number,
        public y?: number,
        public total?: number,
    ) {
        this.total = this.x + this.y;
    }
}

Я должен был знать, что Angular должен знать, что естьзависимость между total и x, y.Всякий раз, когда x или y обновляется, Angular должен заново оценить total.

Я знаю, что это можно сделать, написав

this.calculator.total = this.calculator.x + this.calculator.y

в ngOnInit контроллера или в onchange триггере.Но это не является масштабируемым и модульным, если у меня много производных переменных.Это правда, что Class - только машинопись, и он не знает об Angular.Можете ли вы помочь мне, поставив альтернативы.

1 Ответ

1 голос
/ 20 марта 2019

Если неэффективно использовать геттер для общего количества Вы можете обновить класс Calculator, чтобы он выглядел как

export class Calculator {
    constructor(
        private _x?: number,
        private _y?: number,
        public total?: number,
    ) {
        this.total = this.x + this.y;
    }
    private update() {
        this.total = this.x + this.y;
    }
    set x(val) {
        this._x = val;
        this.update();
    }
    set y(val) {
        this._y = val;
        this.update();
    }
}

теперь вы можете пересчитывать несколько свойств всякий раз, когда в объекте происходят изменения.

...