feat(form-field): use injection token for providing form-field #18777
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Implementers of custom form-field controls often want to inject the
parent
MatFormField
optionally. This currently has negative impactas the whole
MatFormField
class w/ Angular metadata is brought indue to the class being used as injector token. This can be avoided by
using a separate thin injection token called
MAT_FORM_FIELD
.We use this now in
MatSelect
,MatAutocompleteTrigger
andMatChipList
. Thesedon't necessarily require a form-field, so it's a significant bundle size improvement
for such standalone controls w/o form-field.
Another benefit is that the MDC-based form-field no longer needs to re-provide the
standard
MatFormField
w/ the downside of bringing in a lot of unnecessary code.