Вы можете использовать Angular Реактивный Контроль формы и использовать его disable()
для достижения ваших требований. Попробуйте следующий
Контроллер
import { Component, OnInit } from '@angular/core';
import { FormControl, FormGroup } from '@angular/forms';
@Component({
selector: 'input-autosize-textarea-example',
templateUrl: './input-autosize-textarea-example.html',
styleUrls: ['./input-autosize-textarea-example.css'],
})
export class InputAutosizeTextareaExample implements OnInit {
public remainingWords = 100;
public textareaForm = new FormGroup ({
textinput: new FormControl()
});
ngOnInit() {
}
wordCounter() {
this.remainingWords = this.textareaForm.value ? 100 - this.textareaForm.value.textinput.split(/\s+/).length : 100;
if (this.remainingWords <= 0) {
this.textareaForm.controls['textinput'].disable();
}
}
}
Шаблон
<form [formGroup]="textareaForm">
<textarea
formControlName="textinput"
(keyup)="wordCounter()"
id="wmd-input"
name="post-text"
class="wmd-input s-input bar0 js-post-body-field processed"
data-post-type-id="2"
cols="92" rows="15"
tabindex="101"
data-min-length=""
oncopy="return false;"
onpaste="return false;"
oncut="return false;"></textarea>
</form>
<div style="font-style: italic;">
{{ remainingWords }} words remaining...
</div>
<br>
{{textareaForm?.value | json}}
Оператор ?.
называется оператор безопасной навигации и используется для убедитесь, что объекты определены, прежде чем пытаться получить доступ к его свойствам.
Рабочий пример: Stackblitz