2016-05-06 5 views
1

を使用して隠されているとき、フィールドは私ができたngIf、フィールドはangular2/NG2ためngIf

を使用して隠されているときに、モデルの値をクリアするためにどのような方法があるモデル値をクリアする方法がありますこれはangularjsで行いますが、angular2/ng2に対して誰でも私にいくつかのアイデアを与えることができます。とても有難い。

あなたがコントロールとその updateValueを活用またはそれを行うために ngModelを使用してバインドされた要素を設定する必要が
<form #myForm="ngForm" novalidate> 
<div> 
<input class="form-control" type="text" [(ngModel)]="contact.Ethnicity" ngControl="Ethnicity" #Ethnicity="ngForm" required/> 
</div> 

<div *ngIf="contact.Ethnicity !=null"> 
<input resetHidden class="form-control" type="text" [(ngModel)]="contact.FirstName" ngControl="FirstName" #FirstName="ngForm" required/> 
</div> 
</form> 


import {Directive, ElementRef, Input } from 'angular2/core'; 
import {NgModel} from 'angular2/common'; 
@Directive({ 
    selector: '[resetHidden]', 
    providers: [NgModel], 
    host: { 
    '(ngModelChange)' : 'onInputChange($event)' 
    } 
}) 
export class ResetHiddenDirective implements OnDestroy { 
    constructor(public model:NgModel) {} 
    ngOnDestroy() { 
    this.model.valueAccessor.writeValue(''); 
    this.model.viewToModelUpdate(''); 
    } 
    onInputChange(event){ 
    console.log('this.model.value before: '+this.model.value); 
    this.model.valueAccessor.writeValue(event.toUpperCase()); 
    console.log('this.model.value after: '+this.model.value); 
    } 
} 
+1

あなたには、いくつかを投稿してくださいすることができ問題を示すコード。 「モデル値」とはどのように使用するのですか? –

+0

@GünterZöchbauer、いくつかのコードを追加しましたが、これを処理するためにカスタムディレクティブを使用することを考えていましたが、これは失敗しました – red

答えて

0

constructor() { 
    this.ctrl = new Control(''); 
} 

hideInput() { 
    this.inputHidden = true; 
    this.ctrl.updateValue(''); 
    this.someValue = ''; 
} 

、テンプレートで:

<div *ngIf="inputHidden"> 
    <input [ngFormControl]="ctrl" [(ngModel)]="someValue"/> 
</div> 
<div (click)="hideInput()">Hide</div> 
+0

これはログの再レンダリングを伴う相対的に大きなフォームになるため、カスタムディレクティブを繰り返し作業を保存しますか? – red

関連する問題