我有一个显示<input type="text">元素列表的表单.它们共享一个公共保存按钮,该按钮在表单变脏之前被禁用.然后,一旦用户单击"保存"按钮,数据将被提交给服务器.如果服务器成功保存了数据,我想将表单重置为原始状态,但我想保留表单中的所有数据,以便用户可以选择进一步编辑数据.
搜索后,我找到了NgForm.reset()方法.虽然这确实将形式设置为原始形式,但遗憾的是它也清除了形式.重置方法似乎确实有一个值参数,但我似乎无法找出它的作用.不过,我不希望数据被清除.
我也尝试myForm.pristine = true过,但由于某种原因,这会导致重新加载页面.
我正在Angular 2中编写一个表单,用户提交表单,验证它,如果输入有任何错误,我想将用户的浏览器滚动到第一个带有"错误"类的元素
问题是,我的所有错误都使用*ngIf,如下所示:
<input type="text" [(ngModel)]="model.first_name">
<div class="error" *ngIf="errors.first_name">
{{errors.first_name}}
</div>
Run Code Online (Sandbox Code Playgroud)
在我的提交功能
submit(){
this.errors = this.validate();
if(this.errors.any()){
var errorDivs = document.getElementsByClassName("error");
if(errorDivs.length > 0){
errorDivs[0].scrollIntoView();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我意识到这是因为*ngIf完全从DOM中删除div并且Angular检查更改还没有机会运行.有一个聪明而干净的方法吗?
在 Angular2 应用程序中,我想在模板之间startDate和endDate模板中迭代所有天。像这样的东西:
<div *ngFor="let date of dateRange(startDate,endDate)">
{{date}}
</div>
Run Code Online (Sandbox Code Playgroud)
我意识到我可以预先计算所有这些日期并将它们存储在一个数组中,然后再显示它们,但我宁愿不占用内存。我一直在阅读 javascript生成器函数,似乎在 vanilla javascript 中,我可以这样做:
function* dateRange(start,end) {
let cur = start;
while (cur <= end) {
yield cur;
cur.setDate(cur.getDate() + 1);
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在 Angular2 组件中使用这样的生成器函数,它可以在模板迭代器中使用?
我有一个模板驱动的表单,其中包含许多类似以下内容的输入
<input type="text" name="data" [(ngModel)]="data" [disabled]="disabled" />
Run Code Online (Sandbox Code Playgroud)
我想编写一个测试,以确保在将disabled变量设置为true 时,禁用所有输入。到目前为止,这是我的测试。它可以工作,但是上面有几个“禁用”属性,element并且element.nativeElement这些属性仍然为false。另外,在调试器中停止时,Chrome中的渲染视图看上去不会被禁用。实际上,只有“ ng-reflect-is-disabled”属性为真。
it("should disable all inputs when disabled is true", () => {
component.disabled = true;
fixture.detectChanges();
inputs = fixture.debugElement.queryAll(By.css('input'));
inputs.forEach(element => {
expect(element.attributes["ng-reflect-is-disabled"]).toBe('true');
});
});
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法可以实际检查输入的禁用状态?
我正在将ASP.net Core 2.0与MVC一起使用。我有一个控制器动作,我想将请求大小限制为1MB。我RequestSizeLimit像这样添加了属性:
[HttpPost]
[Authorize]
[RequestSizeLimit(1_000_000)]
public async Task<List<ResourceUploadResult>> Upload([FromBody]List<Resource> updatedList){
//....
}
Run Code Online (Sandbox Code Playgroud)
上载<1MB时,可以正常工作。当它大于1MB时,我希望服务器返回状态413,但是,该updatedList参数为null且该操作正常执行,NullReferenceException尝试迭代该列表时遇到a 。
有没有办法告诉Kestrel在达到大小限制时返回413?