Angular 4中模型对象的Getter和Setter

时间:2017-06-12 21:19:40

标签: angular typescript

如何在模型类中使getter和setter工作?

我的目标是在输入时计算所选日期的整数值,包含日期,更新。我打算在setter中做,但Angular 4忽略了我的模型的setter和getter。

我的模特课:

export class MyModel {
    @Input('date')
    get date(): String {
        console.log('Getting date');
        ...
    }

    set date(val) {
        console.log('Setting date: ' + val);
        ...
    }
}

我的模板:

...
<input class="form-control" name="dp" [(ngModel)]="model.date">
...

但是吸气鬼和制定者不会工作。我错过了什么?

1 个答案:

答案 0 :(得分:32)

将date属性声明为输入的方式看起来不正确但很难说它是否是唯一没有看到所有代码的问题。而不是使用@Input('date')声明date属性,如:private _date: string;。此外,请确保使用new关键字实例化模型。最后,使用常规点表示法访问该属性。

https://www.typescriptlang.org/docs/handbook/classes.html

中查看您的工作
let passcode = "secret passcode";

class Employee {
    private _fullName: string;

    get fullName(): string {
        return this._fullName;
    }

    set fullName(newName: string) {
        if (passcode && passcode == "secret passcode") {
            this._fullName = newName;
        }
        else {
            console.log("Error: Unauthorized update of employee!");
        }
    }
}

let employee = new Employee();
employee.fullName = "Bob Smith";
if (employee.fullName) {
    console.log(employee.fullName);
}

这里有一个吸烟者,展示了你想要做的事情: https://plnkr.co/edit/OUoD5J1lfO6bIeME9N0F?p=preview