Forms 如何将数据更新到md表?
我正在用Angular 4开发web应用程序,但我遇到了一个问题,因为我不知道如何访问我的Forms 如何将数据更新到md表?,forms,angular,Forms,Angular,我正在用Angular 4开发web应用程序,但我遇到了一个问题,因为我不知道如何访问我的md表中的新数据 我已经为我的申请复制了相同的例子 我有一个带有表单和表格http组件的组件,在我的表格httpComponent中,我有@Input字段,其中包含从表格发送的变量,但当我调用表格http时,没有问题,这会正确地从表格接收数据和呈现的数据,但当我修改表格中的字段并按下按钮(提交)时我无法在发送新的@输入日期字段的情况下呈现表http 在我的模板组件中,我有这个 <form #f="n
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中,您现在可以看到控制台日志被触发无论何时更改日期,http请求中的代码>
您的问题:希望我正确诊断了您的问题,并且上述解决方案对您有效:)伟大的很高兴听到我们为您找到了解决方案!:)
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
}