小编spe*_*bob的帖子

将表单设置为Pristine而不清除数据

我有一个显示<input type="text">元素列表的表单.它们共享一个公共保存按钮,该按钮在表单变脏之前被禁用.然后,一旦用户单击"保存"按钮,数据将被提交给服务器.如果服务器成功保存了数据,我想将表单重置为原始状态,但我想保留表单中的所有数据,以便用户可以选择进一步编辑数据.

搜索后,我找到了NgForm.reset()方法.虽然这确实将形式设置为原始形式,但遗憾的是它也清除了形式.重置方法似乎确实有一个值参数,但我似乎无法找出它的作用.不过,我不希望数据被清除.

我也尝试myForm.pristine = true过,但由于某种原因,这会导致重新加载页面.

这是一个证明问题的傻瓜.

angular

46
推荐指数
4
解决办法
4万
查看次数

Angular2滚动到具有*ngIf的元素

我正在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检查更改还没有机会运行.有一个聪明而干净的方法吗?

angular

16
推荐指数
2
解决办法
2万
查看次数

Angular2 生成器函数

在 Angular2 应用程序中,我想在模板之间startDateendDate模板中迭代所有天。像这样的东西:

<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 组件中使用这样的生成器函数,它可以在模板迭代器中使用?

typescript angular

5
推荐指数
1
解决办法
1056
查看次数

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)

有没有更好的方法可以实际检查输入的禁用状态?

karma-jasmine angular

5
推荐指数
0
解决办法
1098
查看次数

Asp.net Core RequestSizeLimit仍执行操作

我正在将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?

c# kestrel-http-server asp.net-core

5
推荐指数
1
解决办法
294
查看次数