2017-06-12 69 views
5

如何让吸气和吸气器在我的模型类中工作?Angular 4中的模型对象的吸气和吸气器

我的目标是计算所选日期的整数值,当输入时,包含日期,更新。我打算用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"> 
... 

但getter和setter不工作。我错过了什么?

+3

这句法'@input('日期')'仅适用于嵌套组件的属性。装饰器不属于模型类属性。 – DeborahK

+0

你还可以显示你的组件类的代码以及它如何使用这个模型类? – DeborahK

+0

@DeborahK如果我们将数据从服务传递给嵌套组件。输入是获得者唯一的方式吗? – Winnemucca

回答

8

您将date属性声明为输入的方式看起来不正确,但很难说如果这是唯一的问题而没有看到所有的代码。而不是使用@Input('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); 
} 

,这里是一个展示plunker什么这听起来像你正在试图做的: https://plnkr.co/edit/OUoD5J1lfO6bIeME9N0F?p=preview