Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Angular 8 - reactive form directive e disabled attribute

Depois que eu atualizei do Angular 7 para o Angular 8 em uma aplicação o [disabled] deixou de funcionar no template. E para carregar a aplicação eu precisei alterar para [attr.disabled] . Ainda não entendi muito bem o porque do 'attr.'

Mas de todo jeito o disabled deixou de funcionar como antes (antes ele ficava desabilitado caso a pessoa selecionasse tantas tags. Se o usuário ticava mais que 5, desabilitava, se ele 'desticava' habilitava de novo. Mas no angular 8 deixou de funcionar e agora aparece o erro

It looks like you're using the disabled attribute with a reactive form directive. If you set disabled to true
when you set up this control in your component class, the disabled attribute will actually be set in the DOM for
you. We recommend using this approach to avoid 'changed after checked' errors.

Example: 
form = new FormGroup({
  first: new FormControl({value: 'Nancy', disabled: true}, Validators.required),
  last: new FormControl('Drew', Validators.required)
      });

HTML

...
<div class="form-group col-5 col-md-3" *ngFor="let tag of tags" [attr.disabled]="desabilitar(tag)">
...

Typescript

...
    public desabilitar(tag: Tag): boolean {
        return !this.exists(tag) && this.tagsEmpresa.length === 5;
    }
...

Não parece algo tão difícil, a ideia pelo que eu entendi é que eu deveria desabilitar pelo próprio ts e não pelo template, é isso? Não peguei muito bem..

2 respostas

Fala ai Enzo, tudo bem? Estranho, não era para ter essa diferença, consegue compartilhar o projeto completo? Assim eu consigo simular o problema por aqui e analisá-lo com mais calma.

Pode compartilhar através do Github ou Google Drive (zipado).

Fico no aguardo.

solução!

Estou com o mesmo problema no [disabled], não funciona! Se alguem puder colocar uma solução. A dá aula também não funciona:

 [disabled]="form.invalid || form.valid"