在 Angular2 中提交后如何隐藏表单?

How hide form after submit in Angular2?

我有 Angular 中的表格 2. 提交后想隐藏它并显示消息。

<div class="registration">
<form [formGroup]="registrationForm" (ngSubmit)="RegisterUser(registrationForm.value)" novalidate>
...
</form>
</div>

在 Angular 中,我使用以下代码执行此操作:

<div class="registration" ng-hide="registrationForm.$submitted" >
<form name="registrationForm" ng-submit="RegisterUser()" novalidate>
...
</form>
</div>

一个简单的方法是使用 *ngIf:

<div class="registration" *ngIf="showForm">
<form [formGroup]="registrationForm" (ngSubmit)="RegisterUser(registrationForm.value);showForm=false;" novalidate>
...
</form>
</div>

并在您的打字稿中初始化变量:

showForm=true

你的HTML

<div class="registration" [hidden]="submitted">
<form [formGroup]="registrationForm" (ngSubmit)="RegisterUser(registrationForm.value)" novalidate>
...
</form>
</div>

你的组件ts文件

RegisterUser(){
-----

submitted=true
}

您可以为表单声明一个模板变量并使用 ngForm 指令的 submitted 成员

<form #form="ngForm" [hidden]="form.submitted">
    ...
</form>

但如果对您来说节省内存很重要,那么这不适用于 *ngIf

简单地绑定到 toggle 变量和 show/hide 按照你的要求像这样

<div class="message" *ngIf="formSubmit; else #theForm">Message here</div>
<div class="registration" #theForm>
    <form [formGroup]="registrationForm" (ngSubmit)="RegisterUser(registrationForm.value); formSubmit = !formSubmit">
    ...
    </form>
</div>

<ng-template *ngIf="formSubmit; then #alreadySubmitted else #theForm"></ng-template>
<div class="message" #alreadySubmitted>
    Message here
</div>
<div class="registration" #theForm>
    <form [formGroup]="registrationForm"
      (ngSubmit)="RegisterUser(registrationForm.value); formSubmit = !formSubmit">
    ...
    </form>
</div>

PS:您也可以使用 [hidden] 来切换视图。

<div class="registration" *ngIf="ifregistration"
<form [formGroup]="registrationForm" (ngSubmit)="RegisterUser(registrationForm.value)" novalidate>
</form>
</div>

在 Typescript 中初始化变量:

RegisterUser(f: NgForm) {
    if (f.valid) {
        var form_submitted = f.value
        this.loading = true;
        this.ifregistration = false;
    }
}