2017-05-31 6 views
2

角度2の素材にダイアログを作成しました。次のように私は、モーダルを開くよ:ダイアログの内側のフォームをクリアする方法角度2

私のコンポーネント

.... 
private refDialog; 
@ViewChild('display') display; 

openDialog() { 
    this.refDialog= this.dialog.open(this.display); 
} 
.... 

私のhtml

<ng-template #display> 
    <form (ngSubmit)="onSubmit(f)" #f="ngForm"> 
     <div class='col-md-12'> 
      <md-input-container> 
       <input mdInput placeholder="Name" name="name" [(ngModel)]="product.name" #name="ngModel"> 
      </md-input-container> 
     </div> 

     ..... 

    </form> 
</ng-template> 

私は、ダイアログを開く前に、フォームをクリアする必要があります。私はこれをできるだけ簡単にしたいと思います。私はprimeNGダイアログを使用していましたが、私はthis.f.reset()を使用しました。そしてそれは働いた。しかし、角度のある素材2は異なった働きをします。

私はすべて成功しませんでした。これは私にとってはうまくいかない:

.... 
private refDialog; 
@ViewChild('display') display; 
@ViewChild('f') f; 

openDialog() { 
    this.f.reset(); 
    this.refDialog= this.dialog.open(this.display); 
} 

.... 

誰でも助けてくれますか?

答えて

2

は、私が作成したPlunkerのデモを見てみましょう:ここHERE

は、ダイアログコンポーネントである:あなたが見ることができるよう

openDialog(){ 
    this.dialog.open(DialogComponent); 
} 

:ここ

export class DialogComponent implements OnInit{ 
    @ViewChild('myform') myform; 
    constructor(public dialogRef: MdDialogRef<DialogComponent>){} 
    ngOnInit() { 
    this.myform.resetForm(); 
    } 
} 

ルートコンポーネントでありますHTMLのハードコードされた入力値がクリアされてフォームがダーティな状態になっても毎回フォームがどのようにクリアされるのかをGIFで確認すると、resetForm()方法 enter image description here

+0

答えに感謝します。 this.f.restForm()は機能しません。 openDialog()内にフォームのインスタンスがないことを確認しました。それはおそらく彼がリセットすることができない理由です。角度のある素材ダイアログ内にあるフォームインスタンスを取得する方法がわかりません。スコープの問題のようです –

+0

問題を再現するためにプランナーを作成しましたが、この問題を解決してこの回答を更新することで解決します。 –

+0

ありがとう、私の友人! –

関連する問題