Estou tentando usar o disabled
atributo de a formControl
. Quando eu coloco no template, funciona:
<md-input formControlName="id" placeholder="ID" [disabled]="true"></md-input>
Mas o navegador me alerta:
Parece que você está usando o atributo disabled com uma diretiva de formulário reativa. Se você definir disabled como true ao configurar este controle em sua classe de componente, o atributo disabled será realmente definido no DOM para você. Recomendamos o uso dessa abordagem para evitar erros "alterado após verificação".
Example: form = new FormGroup({ first: new FormControl({value: 'Nancy', disabled: true}, Validators.required), last: new FormControl('Drew', Validators.required) });
Então, eu coloquei no FormControl
e excluí do modelo:
constructor(private itemsService: ItemsService) {
this._items = [];
this.myForm = new FormGroup({
id: new FormControl({value: '', disabled: true}, Validators.required),
title: new FormControl(),
description: new FormControl()
});
this.id = this.myForm.controls['id'];
this.title = this.myForm.controls['title'];
this.description = this.myForm.controls['description'];
this.id.patchValue(this._items.length);
}
Mas não funciona (não está desabilitando o input
). Qual é o problema?
angular
typescript
FacundoGFlores
fonte
fonte
this.myForm.controls['id'].disable()
em algum lugar no construtor. Fiz uma biblioteca que torna mais fácil trabalhar com formulários dinâmicos: github.com/mat3e/dorfRespostas:
Eu tenho usado
[attr.disabled]
porque ainda gosto deste template orientado ao invés de programático enable () / disable (), pois é IMO superior.mudança
para
Se você estiver usando um material mais recente, mude
md-input
paramat-input
.fonte
[disabled]
e o aviso no console está funcionando. Estou usando o Angular 4.1.3[attr.disabled]
simplesmente não aciona o aviso que[disabled]
mostraVocê pode ativar / desativar um controle de formulário usando os seguintes métodos:
control.disable () ou control.enable ()
Se isso não funcionar, você pode usar uma diretiva
Então você poderia usá-lo assim
Esta técnica é descrita aqui:
https://netbasal.com/disabling-form-controls-when-working-with-reactive-forms-in-angular-549dd7b42110
Espero que ajude
fonte
NgControl (`No provider for NgControl`)
Descobri que precisava ter um valor padrão, mesmo que fosse uma string vazia para funcionar. Então, é isso:
... tinha que se tornar isso:
Veja minha pergunta (que não acredito ser uma duplicata): Passar 'desativado' no objeto de estado do formulário para o construtor FormControl não funciona
fonte
No meu caso com o Angular 8 . Eu queria ativar / desativar a entrada dependendo da condição.
[attr.disabled]
não funcionou para mim, então aqui está a minha solução.Eu removi
[attr.disabled]
do HTML e na função do componente executei esta verificação:fonte
Inicialização (componente) usando:
Então, em vez de usar (template):
Basta remover o atributo desativado:
E quando você tiver itens para mostrar, inicie (no componente):
this.selector.enable();
fonte
Apenas quem está usando formulários reativos: Para elementos HTML nativos [attr.disabled] funcionará, mas para elementos materiais, precisamos desativar dinamicamente o elemento.
Caso contrário, ele será mostrado na mensagem de aviso do console.
fonte
Eu tentei isso no angular 7. Funcionou com sucesso.
fonte
Para um formulário, o controle torna desabilitado
Ou método de definição inicial.
fonte
Use [attr.disabled] em vez [disabled], no meu caso funciona bem
fonte
adicionar disable = "true" ao campo html Exemplo: desativar
fonte
A beleza das formas reativas é que você pode capturar eventos de alterações de valores de qualquer elemento de entrada com muita facilidade e, ao mesmo tempo, alterar seus valores / status. Portanto, aqui está uma outra maneira de resolver seu problema usando
enable
disable
.Aqui está a solução completa no stackblitz .
fonte
a desativação de campos de formulário de esteira está isenta se você estiver usando a validação de formulário, portanto, certifique-se de que seu campo de formulário não tenha validações como (validators.required), isso funcionou para mim. por ex:
editUserPhone: new FormControl ({value: '', disabled: true})
isso torna os números de telefone do usuário não editáveis.
fonte
Esta foi a minha solução:
fonte
no Angular-9, se você deseja habilitar / desabilitar no botão, clique aqui é uma solução simples se você estiver usando formas reativas.
definir uma função no arquivo component.ts
Chame-o de seu component.html
por exemplo
fonte
Ao criar um novo controle de formulário, use próximo:
Se você quiser mudar a atividade, use a seguir:
ou
fonte
adicione o atributo de nome à sua entrada MD. se não resolver o problema, poste seu modelo
fonte
A melhor maneira de fazer isso.
fonte