The text-field package provides useful utilities for working with text input fields such as
<input> and <textarea>.
<textarea>The cdkTextareaAutosize directive can be applied to any <textarea> to make it automatically
resize to fit its content. The minimum and maximum number of rows to expand to can be set via the
cdkAutosizeMinRows and cdkAutosizeMaxRows properties respectively.
The resize logic can be triggered programmatically by calling resizeToFitContent. This method
takes an optional boolean parameter force that defaults to false. Passing true will force the
<textarea> to resize even if its text content has not changed, this can be useful if the styles
affecting the <textarea> have changed.
<input>The AutofillMonitor is an injectable service that allows the user to monitor the autofill state of
an <input>. It has a monitor method that takes an element to monitor and returns an
Observable of autofill event objects with a target and isAutofilled property. The observable
emits every time the autofill state of the given <input> changes. Any element you monitor should
eventually be unmonitored by calling stopMonitoring with the same element.
To simplify this process, there is also a cdkAutofill directive that automatically handles
monitoring and unmonitoring and doubles as an @Output binding that emits when the autofill state
changes.
Note: This service requires some CSS to install animation hooks when the autofill statechanges. If
you are using Angular Material, this CSS is included as part of the mat-core mixin. If you are not
using Angular Material, you should include this CSS with the cdk-text-field mixin.
@import '~@angular/cdk/text-field/text-field';
@include cdk-text-field();
<input>It can be difficult to override the browser default background and color properties on an
autofilled <input>. To make this simpler, the CDK includes a mixin cdk-text-field-autofill-color
which can be used to set these properties. It takes a background value as the first parameter and
an optional color value as the second parameter.
@import '~@angular/cdk/text-field/text-field';
// Set custom-autofill inputs to have no background and red text.
input.custom-autofill {
@include cdk-text-field-autofill-color(transparent, red);
}