首页 文章

当我导航到打开的相同网址而路由或查询参数没有任何更改时,如何在Angular 2中重新初始化我的组件?

提问于
浏览
0

我有一个左侧导航窗格,其中有一个' Add Item '链接,它将我带到一个用于添加项目的表单 .

我的路线看起来像这样:

{ path: 'additem', component: AddItemComponent, canActivate: [AuthGuard], data: {title: 'Add Item'} }

用户成功保存项目后,我希望在禁用保存按钮的情况下保持同一页面 . 但是,当用户再次单击左侧导航栏中的“添加项目”链接时,我希望重新初始化我的组件 . 我如何执行此操作,因为如果当前视图是导航到的那个视图,则不会调用 ngOnInit 方法?我无法订阅查询或路由参数的更改,因为我没有查询或路由参数 .

1 回答

  • 0

    如果您使用formbuilder作为表单,

    在你的html中使用 disabled 属性来禁用按钮

    <form [formGroup]="offerForm" (ngSubmit)="addMyOffer(offerForm.value)">
      <input type="text" formControlName="myOffer">
      <button type="submit" [disabled]="!offerForm.valid">
         <span>Add</span>
      </button>          
    </form>
    

    在组件中,保存数据后,重置表单以添加新商品

    import { FormBuilder, FormGroup, Validators,FormControl } from '@angular/forms';
    
    export class formComponent{
      private offerForm:FormGroup;
    
      constructor(private formBuilder: FormBuilder){
        this.offerForm = this.formBuilder.group({
           'myOffer' :['',Validators.required],
        });
      }
    
    
      private addMyOffer(obj:any){
    
         //code for saving data      
         this.offerForm.reset(); // resets the form to add new offer
    
      }
    }
    

相关问题