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

时间:2017-11-16 12:12:46

标签: angular angular2-routing

我有一个左侧导航窗格,其中有一个“添加项目”链接,该链接将我带到一个用于添加项目的表单。

我的路线如下:

SELECT cast(st_y(st_transform(way, 4326)) as text) AS lat, cast(st_x(st_transform(way, 4326)) as text) AS lon "addr:housenumber" AS husenumber, "addr:street" AS street, "addr:postcode" AS postcode FROM planet_osm_point

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

1 个答案:

答案 0 :(得分: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

  }
}