2017-06-12 22 views
5

モデルクラスでゲッターとセッターを動作させるにはどうすればよいですか?モデルオブジェクトのゲッターとセッター(角4)

私の目標は、日付を含む入力が更新されたときに、選択された日の整数値を計算することです。私はセッターでそれをやろうとしていましたが、Angular 4は私のモデルのセッターとゲッタを無視しています。

私のモデルクラス:

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"> 
... 

しかし、ゲッターとセッターが動作しません。私は何が欠けていますか?

+3

この構文 '@Input( '日付') 'は、ネストしたコンポーネントのプロパティのみです。デコレータはモデルクラスプロパティには属しません。 – DeborahK

+0

コンポーネントクラスのコードと、このモデルクラスの使用方法も表示できますか? – DeborahK

+0

@DeborahKサービスからネストされたコンポーネントにデータを渡す場合。ゲッターの唯一の方法は入力ですか? – Winnemucca

答えて

8

入力として日付プロパティを宣言する方法は間違っていますが、すべてのコードを見ることなく唯一の問題だとするのは難しいです。 @Input('date')を使用するのではなく、private _date: string;のようにdateプロパティを宣言します。また、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

関連する問題