Forms 如何将数据更新到md表?

Forms 如何将数据更新到md表?,forms,angular,Forms,Angular,我正在用Angular 4开发web应用程序,但我遇到了一个问题,因为我不知道如何访问我的md表中的新数据 我已经为我的申请复制了相同的例子 我有一个带有表单和表格http组件的组件,在我的表格httpComponent中,我有@Input字段,其中包含从表格发送的变量,但当我调用表格http时,没有问题,这会正确地从表格接收数据和呈现的数据,但当我修改表格中的字段并按下按钮(提交)时我无法在发送新的@输入日期字段的情况下呈现表http 在我的模板组件中,我有这个 <form #f="n

我正在用Angular 4开发web应用程序,但我遇到了一个问题,因为我不知道如何访问我的
md表中的新数据

我已经为我的申请复制了相同的例子

我有一个带有
表单
表格http
组件的组件,在我的表格httpComponent中,我有@Input字段,其中包含从表格发送的变量,但当我调用表格http时,没有问题,这会正确地从表格接收数据和呈现的数据,但当我修改表格中的字段并按下按钮(提交)时我无法在发送新的
@输入日期
字段的情况下呈现
表http

在我的模板组件中,我有这个

<form #f="ngForm" (ngSubmit)="onSubmit(f)" novalidate>
  <div>
    <md-input-container>
      <input
        mdInput
        [mdDatepicker]="pickerInit"
        placeholder="Fecha inicial"
        name="init"
        #init="ngModel"
        ngModel
        required>
      <button mdSuffix [mdDatepickerToggle]="pickerInit"></button>
    </md-input-container>
    <md-datepicker #pickerInit></md-datepicker>
  </div>
  <div >
    <button md-raised-button>Buscar</button>
  </div>
</form>
<http-table *ngIf=active [date]=date></http-table>
在我的
表http
组件中,我声明了我的字段
@Input()date:date

当我第一次按下按钮时,没有问题,
table http
呈现正确的数据,但当我第二次按下按钮时,
http table
不会重新加载新数据

我不明白为什么不重新加载新数据

更新

这里我添加了我的plunker,简言之,我的问题是,当选择一个日期并按下按钮(按第二次前进,这在我的真实组件中不会发生,所以不要担心),by Console在同一日期打印两次,假设该日期用于我的服务以获取新数据,如果我更改日期并再次按下按钮,请不要重新打印此数据,也不要更新我的表格


希望我能理解您的问题,您的意思是,当父级中的日期更改时,http请求不会在更改时重新刷新

实际上,您不需要在子级中使用
OnInit
,因为我们不需要在初始化组件时激发任何东西。你们想做的是,当孩子得到一个日期输入时,就开火。因此,我们接下来可以做的是利用
ngochanges
生命周期钩子,因为它监视
@Input
中的变化。因此,您可以删除child中的
OnInit
,而是执行以下操作:

ngOnChanges(){
log(“onchanges->”,this.date);
this.exampleDatabase=newexamplehttpdao(this.http,this.date)
this.dataSource=新的ExampleDataSource(this.exampleDatabase);
此.ref.detectChanges()
}
显然,至少在plunker中也存在一些更改检测问题,因此我们添加了
ChangeDetectorRef
,并使用
detectChanges()
手动触发更改检测

从'@angular/core'导入{ChangeDetectorRef};
构造函数(..,private ref:ChangeDetectorRef){}
在plunker中,您现在可以看到控制台日志
被触发


您的问题:

希望我正确诊断了您的问题,并且上述解决方案对您有效:)伟大的很高兴听到我们为您找到了解决方案!:)
onSubmit(f: NgForm) {
  this.active = false;
  if (!f.value["init"]) {
    alert("Ingrese la fecha de inicio.");
    return;
  }
  this.date = this.localISOTime(f.value["init"]);
  this.active = true;
  console.log("Form values -> ", f.value); //Here my data exists without problem
}