javascript - 更改后的 Angular Testing 输入值

标签 javascript angular unit-testing testing jasmine

我想在测试时更改我的输入值,所以我做了:

const de = fixture.debugElement.query(By.css('[formControlName="username"]'));
de.nativeElement.value = "10";

然后我提交表单:

component.onSubmit();

并且输入的值仍然没有改变。 我尝试添加

fixture.detectChanges();

提交表单后,实际上什么也没做。

最佳答案

为什么要通过 CSS 选择器获取元素? Angular 有一种方法可以创建 Reactive Forms这比你想做的要容易得多。举个例子:

export class ReactiveFormExampleComponent implements OnInit {
  public form: FormGroup;

  constructor () { } 

  ngOnInit(): void {
    this.form = new FormGroup({ 
      'username': FormControl(null, [/** Any form validators here **/]) 
    });
  }

  onSubmit(): void {
    // get the value of the username
    const username = this.form.get('username').value;
  }
}

如果您真的想在不按下带有附加点击事件的按钮的情况下观察值并检测更改,您可以在初始化表单后执行此操作。

this.form.get('username').valueChanges.subscribe(val => {
  // new username value is `val`
});

关于javascript - 更改后的 Angular Testing 输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45597774/

相关文章:

angular - 如何将表达式作为 Angular2 中的输入传递给组件?

javascript - 如何在express中使用sequelize检索用户帖子?

javascript - iframe 和父级之间的事件通知

Javascript 数组计数与控制台不一致?

javascript - 使用 moment.js 进行单元测试

javascript - 单元测试没有失败

javascript - 如何模拟依赖关系以返回特定数据?

javascript - JS冗长计算: split it up with a good syntax?

angular - 禁用 react 形式的输入字段

angular - 如何将 Azure 应用程序设置/连接字符串传递给 Angular 应用程序