将表单状态对象中的“禁用”传递给FormControl构造函数不起作用

BBa*_*ger 3 angular

我们之前已经看过了:

看来您正在使用带有反应形式指令的Disabled属性。如果在组件类中设置此控件时将Disabled设置为true,则实际上将在DOM中为您设置disabled属性。我们建议使用这种方法来避免“检查后更改”错误。

带有警告输出的示例:

  form = new FormGroup({
    first: new FormControl({value: 'Nancy', disabled: true}, Validators.required),
    last: new FormControl('Drew', Validators.required)
  });
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试像它说的那样做时,它是行不通的。因此,我在SO上搜索了这个问题,然后发现了许多类似这样的问题,但是他们都说要FormControl.disable()手动致电。我不想这样做,但是将disabled“表单状态对象”传递给构造函数不起作用。为什么不?

这是我的代码:

this.registerForm('someName', {
  firstName: new FormControl({disabled: true}),
});
Run Code Online (Sandbox Code Playgroud)

这不是一个重复这个问题,因为我是问为什么有些东西不能工作是应该,而无需额外的函数调用,或添加东西的模板。通过答案我发现的结果很关键,并且可能是对Angular设计的疏忽。

BBa*_*ger 7

实际上,它不起作用的原因是我在表单状态对象中没有“值”。应该是:

this.registerForm('someName', {
  firstName: new FormControl({value: '', disabled: true}),
});
Run Code Online (Sandbox Code Playgroud)

  • 我不知道为什么有些愚蠢的人拒绝了你的问题。我刚才遇到了这个问题。这是一个非常有效的问题。这些选民认为自己像来自火星,因此您必须知道这种愚蠢的错误。你不能对此提出质疑。废话的选民。继续问..这是我们的权利。 (2认同)